[英]SwiftUI fill a View inside a switch
有誰知道執行以下操作的正確方法:
我有一個生成路徑的視圖,我想用顏色或漸變(不同類型)填充它。
為此,我有一個從父視圖傳遞給視圖的枚舉:
enum FillColor {
case color(_ color: Color)
case gradient(color1: Color, color2: Color)
}
在視圖中,我有一條路徑:
var body: some View {
GeometryReader { geometry in
Path { path in
...
}
}
}
然后我需要切換並執行以下操作:
switch color {
case .color(let c):
path.fill(c)
case .gradient(let c1, let c2):
let gradient = ...
path.fill(gradient)
}
我是否為Path
創建了一個變量? 但我也需要使用GeometryReader
。
所以我所做的是將創建路徑封裝到一個函數中,然后使用它來避免代碼重復。
我將路徑作為inout參數傳遞,以便能夠對其進行變異。
當然,這不是理想的解決方案。
GeometryReader { geometry in
switch color {
case .color(let c):
Path { path in createPath(&path, geometry: geometry) }
.fill(c)
case .gradient(let c1, let c2):
let gradient = LinearGradient(...)
Path { path in createPath(&path, geometry: geometry) }
.fill(gradient)
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.