如何使用三元运算符将填充修改器应用到具有条件渐变的 SwiftUI 矩形

Mgw*_*gwd 1 gradient modifier swiftui

我想使用条件渐变将颜色应用于矩形(或其他任何东西)

像这样:

Rectangle().fill(useGradient ? .red.gradient : .red)
Run Code Online (Sandbox Code Playgroud)

但这会产生以下错误:

  • “AnyGradient”中的成员“red”生成“Color”类型的结果,但上下文需要“AnyGradient”
  • 静态属性“red”要求类型“AnyGradient”和“Color”等效

我可以创建两个视图并有条件地显示其中之一,但这似乎是重复的代码。

实现这一目标的最简单方法是什么?

示例代码(Xcode 14.0、iOS 16.0)

struct TestGradientView: View {
    
    var useGradient = false
    
    var body: some View {

        Rectangle()
            .fill(useGradient ? .red.gradient : .red)
            .frame(width: 300, height: 440, alignment: .center)
            

    }
}
Run Code Online (Sandbox Code Playgroud)

vac*_*ama 7

Swift 三元运算符?:要求两个结果具有相同的类型。使用AnyShapeStyle()类型橡皮擦来统一类型:

Rectangle()
    .fill(useGradient ? AnyShapeStyle(.red.gradient) : AnyShapeStyle(.red))
    .frame(width: 300, height: 440, alignment: .center)
Run Code Online (Sandbox Code Playgroud)