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

问题描述 投票:0回答:2

如何在 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
swift swiftui
2个回答
1
投票

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

    Color("testColor")
        .colorScheme(.dark)   // << this !!

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


0
投票

如果有人提出这个问题,这是我找到并使用的解决方案:

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)
}
© www.soinside.com 2019 - 2024. All rights reserved.