Ios 如何在swift方法中使用条件语句
我希望我的按钮样式中的填充是有条件的。如果buttonstyle参数表示它是一个圆,我需要大量填充,如果不是,我只需要少量填充 我尝试在代码中添加一个If语句Ios 如何在swift方法中使用条件语句,ios,swift,methods,swiftui,conditional-statements,Ios,Swift,Methods,Swiftui,Conditional Statements,我希望我的按钮样式中的填充是有条件的。如果buttonstyle参数表示它是一个圆,我需要大量填充,如果不是,我只需要少量填充 我尝试在代码中添加一个If语句 configuration.label .padding(if ButtonShape == "Circle" { 60 }else{ 30}) 但我得到了错误“表达式列表中的预期表达式” 我也尝试
configuration.label
.padding(if ButtonShape == "Circle" {
60
}else{
30})
但我得到了错误“表达式列表中的预期表达式”
我也尝试过内联操作。那根本不起作用
.padding((ButtonShape == "Circle"? 60:30))
返回错误:
无法对“String”类型的非可选值使用可选链接
应为“,”分隔符
任何帮助都将不胜感激。以下是完整的代码:
struct SimpleButtonStyle: ButtonStyle {
var ButtonShape: String
func makeBody(configuration: Self.Configuration) -> some
View {
configuration.label
.padding(if ButtonShape == "Circle" {
60
}else{
30})
.contentShape(Circle())
.background(
Group{
if ButtonShape == "Circle" {
if configuration.isPressed{
Circle()
.fill(Color.offWhite)
.overlay(
Circle()
.stroke(Color.gray, lineWidth: 4)
.blur(radius: 4)
.offset(x: 2, y: 2)
.mask(Circle().fill(LinearGradient(Color.black,Color.clear)))
)
.overlay(
Circle()
.stroke(Color.white,lineWidth: 8)
.blur(radius: 4)
.offset(x: -2, y: -2)
.mask(Circle().fill(LinearGradient(Color.clear,Color.black)))
)
} else {
Circle()
.fill(Color.offWhite)
.shadow(color: Color.black.opacity(0.2), radius: 10, x: 10, y: 10)
.shadow(color: Color.white.opacity(0.7), radius: 10, x: -5, y: -5)
}
} else {
if configuration.isPressed{
Capsule()
.fill(Color.offWhite)
.overlay(
Capsule()
.stroke(Color.gray, lineWidth: 4)
.blur(radius: 4)
.offset(x: 2, y: 2)
.mask(Capsule().fill(LinearGradient(Color.black,Color.clear)))
)
.overlay(
Capsule()
.stroke(Color.white,lineWidth: 8)
.blur(radius: 4)
.offset(x: -2, y: -2)
.mask(Capsule().fill(LinearGradient(Color.clear,Color.black)))
)
} else {
Capsule()
.fill(Color.offWhite)
.shadow(color: Color.black.opacity(0.2), radius: 10, x: 10, y: 10)
.shadow(color: Color.white.opacity(0.7), radius: 10, x: -5, y: -5)
}
}
})
}
}
您需要在
?
运算符之前添加空格。如果没有空间,编译器会将其误认为是可选的
.padding(ButtonShape == "Circle" ? 60:30)
您需要在
?
运算符之前添加空格。如果没有空间,编译器会将其误认为是可选的
.padding(ButtonShape == "Circle" ? 60:30)
.padding(ButtonShape==“Circle”?60:30)
应该有效。padding(ButtonShape==“Circle”?60:30)
应该有效!为什么没有呢。正如我前面提到的,在?
之前没有空格的情况下,填充((ButtonShape==“Circle”?60:30))意味着您试图使用?
进行可选链接。我必须记住这一点。真烦人,真管用!为什么没有呢。正如我前面提到的,在?
之前没有空格的情况下,填充((ButtonShape==“Circle”?60:30))意味着您试图使用?
进行可选链接。我必须记住这一点。超级讨厌。