我想创建一个具有矩形等形状的视图,该视图基于变量填充线性或角度渐变。
我的尝试如下所示:
struct TempTestView: View {
@State var circleMode: Bool = true
let gradient: Gradient = Gradient(colors: [.red, .green])
var body: some View {
Rectangle()
.fill(circleMode ? AngularGradient(gradient: gradient, center: .center) : LinearGradient(gradient: gradient, startPoint: .leading, endPoint: .trailing))
.opacity(0.5)
.frame(width: 200, height: 200)
}
}
struct TempTestView_Previews: PreviewProvider {
static var previews: some View {
TempTestView()
}
}
斯威夫特给我一个错误:
Cannot convert value of type 'AngularGradient' to expected argument type 'FillStyle'
如果我更改代码以删除内联 if 并将其替换为AngularGradient(gradient: gradient, center: .center)
or LinearGradient(gradient: gradient, startPoint: .leading, endPoint: .trailing)
,则 swift 编译成功。
如果我尝试将所有内容包装在返回的函数中some ShapeStyle
,swift 会抱怨 AngularGradient 和 LinearGradient 不是同一类型。使用 View 我会将两者都包裹起来AnyView
,但我看不到AnyStyle
要包裹的东西。
我的例子被简化了。出于动画/过渡的原因,不能有两个单独的矩形,这就是为什么我要寻找像我的示例中那样的内联解决方案。
任何帮助,将不胜感激。