如何在 SwiftUI 中创建一个专门包含暗模式颜色的局部变量。 我试图避免将每个视图的配色方案指定为深色以获得深色模式颜色。
例如在 UIKit 中,我可以使用此代码获取深色模式颜色
let traitCollection = UITraitCollection(userInterfaceStyle: .dark)
let darkModeBlueUIColor = UIColor.systemBlue.resolvedColor(with: traitCollection)
我知道我可以从 UIColor 进行转换,但我想仅使用 SwiftUI 来指定它,以便它适用于所有平台。
let darkModeBlueSwiftuiColor = Color(darkModeBlueUIColor)
我想做这样的事情,涉及辅助函数
let darkModeBlueColor = Color.blue.darkModeColor
要为特定颜色模式绘制颜色,只需在视图主体中使用它即可
Color("testColor")
.colorScheme(.dark) // << this !!
如果您使用颜色变量,也可以完成相同的操作。
如果有人提出这个问题,这是我找到并使用的解决方案:
extension UIColor {
var light: UIColor {
resolvedColor(with: .init(userInterfaceStyle: .light))
}
var dark: UIColor {
resolvedColor(with: .init(userInterfaceStyle: .dark))
}
}
我在这里找到了它。
您可以这样初始化 SwiftUI
Color
:
if let primary = UIColor(named: "primary") {
let dark = Color(primary.dark)
let light = Color(primary.light)
}