当我不设置 foregroundColor 时,SwiftUI 会在 Environment 发生变化时自动采用我对象的颜色为 Dark Mode。但是,当我设置foregroundColor时,例如:
Text("Jason Parker")
.foregroundColor(Color.black)
SwiftUI 将不再更改对象的颜色。我听说 UIColor 中有系统颜色,但 SwiftUI 的颜色不包含这些变量。如何使用 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))
现在,显然这是一个简化的配色方案,但你应该明白了。