Я не уверен, насколько интенсивно создание LinearGradient
на телефоне, но если это не проблема, вы можете просто сделать LinearGradient
вычисляемую переменную:
var color1 = "1a"
var color2 = "1b"
let cardGradient: LinearGradient {
LinearGradient(gradient: Gradient(colors: [Color(color1), Color(color2)]), startPoint: .leading, endPoint: .trailing)
}
Если это такинтенсивно используя вычислительные ресурсы, вы можете сделать его необязательным (или присвоить ему значение по умолчанию) и установить его в .onAppear
представления, но тогда вам придется сделать градиент @State
:
var color1 = "1a"
var color2 = "1b"
@State var cardGradient: LinearGradient?
var body: some View {
VStack {
// ... some views here
}.onAppear {
self.cardGradient = LinearGradient(gradient: Gradient(colors: [Color(color1), Color(color2)]), startPoint: .leading, endPoint: .trailing)
}
}
Имейте в виду, что оба эти решения не особенно хороши для случаев, когда цвета часто меняются, но вы не хотите обновлять градиент, когда цвета меняются, однако, похоже, это не проблема для вас,Если вы видите отставание в первом варианте, используйте второй.