[英]SwiftUI: Using Color Set from Asset Catalog
在 SwiftUI 中,我們可以使用以下命令從資產目錄中的顏色集中獲取顏色:
extension Color {
static let coral = Color("coral")
}
這需要字符串類型的名稱,並且對於許多顏色集變得非常乏味。 是否有另一種獲取顏色集的方法,類似於我們使用圖像文字從資產目錄中獲取圖像的方式? 或者,只是一些不那么多余的東西。
如果不是,如何在 SwiftUI 中以編程方式創建動態顏色? 例如,這就是它在 UIKit 中的完成方式:
extension UIColor {
static let dynamicColor = UIColor { $0.userInterfaceStyle == .dark ? .black : .white }
}
如果不是,如何在 SwiftUI 中以編程方式創建動態顏色? 例如,這就是它在 UIKit 中的完成方式:
這幾乎是一樣的:
extension Color {
static let dynamicColor = Color(UIColor { traitCollection in
return traitCollection.userInterfaceStyle == .dark ? .black : .white
})
}
將擴展添加到Color是最簡單的
extension Color {
static let primary = Color("Primary")
static let secondary = Color("Secondary")
}
然后它很容易使用
Text("My Primary Color")
.foregroundColor(.primary)
如果您需要將其用作UIColor ,則在 UIColor 上進行擴展並將實現更改為
Text("My Primary UIColor")
.foregroundColor(Color(uiColor: .primary))
我很確定蘋果會把這個留給開發者。 例如,您可以為 SwiftUI 顏色編寫自定義SwiftGen
(或稍等)模板。 https://github.com/SwiftGen/SwiftGen#colors
這是另一種方法:
import SwiftUI
enum AssetsColor : String
{
case assetColorA
case assetColorB
}
extension Color
{
static func uiColor(_ name: AssetsColor) -> Color
{
return Color(name.rawValue)
}
}
...
.backgroundColor(Color.uiColor(.assetColorA))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.