如何获取 SwiftUI Color 的浅色或深色模式版本?

Bob*_*der 7 swift swiftui

如何在 SwiftUI 中创建一个专门包含暗模式颜色的局部变量。我试图避免将每个视图的配色方案指定为深色以获得深色模式颜色。

例如在 UIKit 中,我可以使用此代码获取深色模式颜色

let traitCollection = UITraitCollection(userInterfaceStyle: .dark)
let darkModeBlueUIColor = UIColor.systemBlue.resolvedColor(with: traitCollection)
Run Code Online (Sandbox Code Playgroud)

我知道我可以从 UIColor 进行转换,但我想仅使用 SwiftUI 来指定它,以便它适用于所有平台。

let darkModeBlueSwiftuiColor = Color(darkModeBlueUIColor)
Run Code Online (Sandbox Code Playgroud)

我想做这样的事情,涉及一个辅助函数

let darkModeBlueColor = Color.blue.darkModeColor
Run Code Online (Sandbox Code Playgroud)

Asp*_*eri 2

要为特定颜色模式绘制颜色,只需在视图主体中使用它即可

    Color("testColor")
        .colorScheme(.dark)   // << this !!
Run Code Online (Sandbox Code Playgroud)

如果您使用颜色变量,也可以完成相同的操作。

  • 不幸的是,这会产生一个视图,而不是具体的颜色。您不能在需要颜色的地方使用它(例如 foregroundColor)。 (4认同)