JWK*_*JWK 6 colors uicolor asset-catalog swiftui
在SwiftUI中,我们可以使用以下方法从资产目录中的颜色集中获取颜色:
extension Color {
static let coral = Color("coral")
}
Run Code Online (Sandbox Code Playgroud)
这需要字符串类型的名称,并且在使用许多颜色集时变得非常乏味。还有另一种获取颜色集的方法,类似于使用图像文字从资产目录中获取图像的方法吗?或者,只是少一些多余的东西。
如果没有,如何在SwiftUI中以编程方式创建动态颜色?例如,这是在UIKit中完成的方式:
extension UIColor {
static let dynamicColor = UIColor { traitCollection in
return traitCollection.userInterfaceStyle == .dark ? .black : .white
}
}
Run Code Online (Sandbox Code Playgroud)
Oll*_*erg 13
最简单的方法是添加Color扩展
extension Color {
static let primary = Color("Primary")
static let secondary = Color("Secondary")
}
Run Code Online (Sandbox Code Playgroud)
然后就很容易使用了
Text("My Primary Color")
.foregroundColor(.primary)
Run Code Online (Sandbox Code Playgroud)
如果您需要将其用作UIColor,则对 UIColor 进行扩展并将实现更改为
Text("My Primary UIColor")
.foregroundColor(Color(uiColor: .primary))
Run Code Online (Sandbox Code Playgroud)
我想分享一种在资产目录中定义动态颜色的替代方法,但无需编写繁琐的代码,例如
Color("yellow")
Run Code Online (Sandbox Code Playgroud)
extension Color {
static let ui = Color.UI()
struct UI {
let yellow = Color("yellow")
}
}
Run Code Online (Sandbox Code Playgroud)
像这样使用你的颜色:
Text("Hello").background(Color.ui.yellow)
Run Code Online (Sandbox Code Playgroud)
这只需要在您的代码中编写硬编码颜色 1 次。
如果没有,如何在 SwiftUI 中以编程方式创建动态颜色?例如,在 UIKit 中是这样完成的:
这几乎是一样的:
extension Color {
static let dynamicColor = Color(UIColor { traitCollection in
return traitCollection.userInterfaceStyle == .dark ? .black : .white
})
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
838 次 |
| 最近记录: |