首页 > 解决方案 > 如何在 Swift 中处理暗模式的自定义颜色

问题描述

以下是我目前处理UI Element Colors暗模式的方式,并为旧操作系统提供回退。

extension UIColor {
    class var mySystemBackground: UIColor {
        if #available(iOS 13, *) {
            return .systemBackground
        } else {
            return .white
        }
    }
}

在这种情况下systemBackground,知道它何时处于暗模式以及何时处于亮模式并相应地发生变化。我想使用自定义颜色做类似的事情。

例如,我有一个自定义的黄色,我目前在整个应用程序中使用它,我想在黑暗模式下提供不同的颜色。

这是我在想的代码...

extension UIColor{
    class var mySystemYellowColor: UIColor {
        // default light-color 
        var myYellow = UIColor(red: 254/255, green: 219/255, blue: 2/255, alpha: 1.0) /* #fedb02 */

        if #available(iOS 13.0, *) {  

            if traitCollection.userInterfaceStyle == .light {
                return myYellow
            } else {
                // color for dark mode in iOS 13.0
                myYellow = UIColor(red: 242/255, green: 125/255, blue: 0/255, alpha: 1.0) /* #f27d00 */
            }
            return myYellow

        } else {
            return myYellow
        }
    }
}

这是在 iOS13 中处理暗模式自定义颜色的一种平易近人的方式吗?

标签: iosswiftios13ios-darkmode

解决方案


在资产目录中创建颜色。

可以为不同的外观创建资产目录中的颜色,并且可以使用UIColor(named:)API访问

请参阅在您的界面中支持暗模式


推荐阅读