当我不设置 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))

现在,显然这是一个简化的配色方案,但你应该明白了。

10-08 12:27