我试图在稍后使用cardGradient的结构中执行此操作。 “ 1a”和“ 1b”是素材资源文件夹中的颜色。
var color1 = "1a"
var color2 = "1b"
let cardGradient = LinearGradient(gradient: Gradient(colors:
[Color(color1), Color(color2)]), startPoint: .leading, endPoint: .trailing)
不能在属性初始化程序中使用实例成员'color1'; 属性初始化程序在“自我”可用之前运行。
不能在属性初始化程序中使用实例成员'color2'; 属性初始化程序在“自我”可用之前运行
//
解决方案:感谢您的帮助!
var color1 = "1a"
var color2 = "1b"
VStack {
// ... some views here
}
.background(LinearGradient(gradient: Gradient(colors:
[Color(color1), Color(color2)]), startPoint: .leading, endPoint: .trailing))
答案 0 :(得分:0)
我不确定在手机上创建LinearGradient
的强度如何,但是如果这不是问题,则可以使LinearGradient
成为计算变量:
var color1 = "1a"
var color2 = "1b"
let cardGradient: LinearGradient {
LinearGradient(gradient: Gradient(colors: [Color(color1), Color(color2)]), startPoint: .leading, endPoint: .trailing)
}
如果它占用大量计算资源,则可以将其设为可选(或为其提供默认值),然后在视图的.onAppear
中进行设置,但随后您必须使渐变{{ 1}}:
@State
请记住,这两种解决方案都不适合颜色经常变化的情况,但是您不希望在颜色变化时进行渐变更新,但这听起来不像是您遇到的问题。如果您看到第一个选项出现滞后,请使用第二个选项。