我想定义一个像 SwiftUI Primary Color 这样的颜色!现在我正在解决我的问题,并在代码中colorScheme使用类似的方法:if
struct ContentView: View {
var body: some View {
CustomPrimaryView()
.frame(width: 100, height: 100)
.cornerRadius(10)
Color.primary
.frame(width: 100, height: 100)
.cornerRadius(10)
}
}
Run Code Online (Sandbox Code Playgroud)
struct CustomPrimaryView: View {
@Environment(\.colorScheme)
var colorScheme
var body: some View {
colorScheme == .light ?
Color(red: 0.1, green: 0.1, blue: 0.1) :
Color(red: 0.95, green: 0.95, blue: 0.95)
}
}
Run Code Online (Sandbox Code Playgroud)
我想定义一个 customPrimary Color 并将其作为颜色而不是视图来访问,它动态地完成我在该视图中所做的工作。我们如何在 SwiftUI 中做到这一点?
您所说的是动态颜色,它根据当前的外观特征在应用于填充像素时选择其 RGB 值。
SwiftUI Color(截至 2021 年)不直接支持在代码中创建自定义动态颜色。这里有两种创建动态的方法Color。
您可以通过在资产目录中创建颜色集来创建动态颜色。它看起来像这样:
请在 Xcode 帮助中了解更多相关信息:创建资产目录和集。
Color然后,您可以使用初始值设定项将颜色集加载为 SwiftUI Color.init(_ name: String, bundle: Bundle = nil)。例如:
let myColor = Color("MyColor")
Run Code Online (Sandbox Code Playgroud)
UIColor您可以使用UIColor.init(dynamicProvider:)创建一个动态UIColor,然后将其包装在 SwiftUI 中Color:
let uiColor = UIColor { traits in
if traits.userInterfaceStyle == .dark {
return .init(red: 0.567, green: 0.622, blue: 0.725, alpha: 1)
} else {
return .init(red: 0.204, green: 0.324, blue: 0.374, alpha: 1)
}
}
let color = Color(uiColor: uiColor)
Run Code Online (Sandbox Code Playgroud)
如果您的目标是 macOS,则可以使用NSColor.init(name:dynamicProvider:).
| 归档时间: |
|
| 查看次数: |
3513 次 |
| 最近记录: |