如何有条件地格式化 SwiftUI 代码
How do I conditionally format SwiftUI code
if(user.reserved == "yes") {
HStack {
Image(systemName: "person.crop.circle.badge.checkmark").foregroundColor(.green)
Text("\(user.name)").foregroundColor(.green)
}
} else if (user.reserved == "no"){
HStack {
Image(systemName: "person.crop.circle.badge.checkmark").foregroundColor(.red)
Text("\(user.name)").foregroundColor(.red)
}
} else if (user.reserved == "waiting") {
HStack {
Image(systemName: "person.crop.circle.badge.checkmark").foregroundColor(.orange)
Text("\(user.name)").foregroundColor(.orange)
}
}
'''
我有这段代码,我想根据用户说“是”或“否”来更改文本颜色的外观。我尝试在 if 语句中创建一个类似“var color: Color”的 var,但是它一直说它不符合视图。我怎样才能有效地制作条件代码,而不是一次又一次地复制过去的每一件事?
您可以根据用户的 reserved
属性:
使用计算出的 属性 returns Color
struct User {
var reserved : String
var name : String
}
struct ContentView: View {
@State private var user = User(reserved: "waiting", name: "Bob")
var colorForReserved : Color {
switch user.reserved {
case "yes":
return .green
case "no":
return .red
case "waiting":
return .orange
default:
return .black
}
}
var body: some View {
HStack {
Image(systemName: "person.crop.circle.badge.checkmark")
Text(user.name)
}
.foregroundColor(colorForReserved)
}
}
请注意,如果将 reserved
更改为 enum
而不是 String
[,则可以避免 default
=17=]
if(user.reserved == "yes") {
HStack {
Image(systemName: "person.crop.circle.badge.checkmark").foregroundColor(.green)
Text("\(user.name)").foregroundColor(.green)
}
} else if (user.reserved == "no"){
HStack {
Image(systemName: "person.crop.circle.badge.checkmark").foregroundColor(.red)
Text("\(user.name)").foregroundColor(.red)
}
} else if (user.reserved == "waiting") {
HStack {
Image(systemName: "person.crop.circle.badge.checkmark").foregroundColor(.orange)
Text("\(user.name)").foregroundColor(.orange)
}
}
'''
我有这段代码,我想根据用户说“是”或“否”来更改文本颜色的外观。我尝试在 if 语句中创建一个类似“var color: Color”的 var,但是它一直说它不符合视图。我怎样才能有效地制作条件代码,而不是一次又一次地复制过去的每一件事?
您可以根据用户的 reserved
属性:
Color
struct User {
var reserved : String
var name : String
}
struct ContentView: View {
@State private var user = User(reserved: "waiting", name: "Bob")
var colorForReserved : Color {
switch user.reserved {
case "yes":
return .green
case "no":
return .red
case "waiting":
return .orange
default:
return .black
}
}
var body: some View {
HStack {
Image(systemName: "person.crop.circle.badge.checkmark")
Text(user.name)
}
.foregroundColor(colorForReserved)
}
}
请注意,如果将 reserved
更改为 enum
而不是 String
[,则可以避免 default
=17=]