簡體   English   中英

SwiftUI 填充開關內的視圖

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM