如何在swift方法中使用条件语句



我希望按钮样式中的填充是有条件的。如果buttonstyle参数说它是一个圆圈,我想要很多填充,如果不是,我只想要一点填充。

我试着在代码中添加一个If语句,

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)

最新更新