当我不设置前景色时,当环境发生变化时,SwiftUI 会自动将对象的颜色采用深色模式。但是,当我设置 foregroundColor 时,例如:
Text("Jason Parker")
.foregroundColor(Color.black)
SwiftUI 将不再更改对象的颜色。我听说 UIColor 中有系统颜色,但 SwiftUI 的 Color 不包含这些变量。如何使用 SwiftUI 将应用程序引入 iOS 13 深色模式?
最佳答案
我是这样做的。首先,如果您希望使用 UIColor
语义,您可以...是 beta 5 吗?
Color(color: Color(UIColor.systemBackground)
但是,如果您想要为应用程序自定义颜色,则需要利用 colorScheme
:
@Environment (\.colorScheme) var colorScheme:ColorScheme
有多种使用方法,我可以使用Color
扩展:
extension Color {
static let yellow = Color.yellow
static let darkGrey = Color.init(UIColor.darkGray)
static func backgroundColor(for colorScheme: ColorScheme) -> Color {
if colorScheme == .dark {
return yellow
} else {
return darkGrey
}
}
}
并像这样使用它:
Text(""Hello world!").background(Color.backgroundColor(for: colorScheme))
现在,显然这是一个简化的配色方案,但您应该明白了。
关于ios - 如何使用 SwiftUI 将应用程序应用到 iOS 13 深色模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57700422/