4

以下是我目前处理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 中处理暗模式自定义颜色的一种平易近人的方式吗?

4

3 回答 3

10

在资产目录中创建颜色。

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

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

于 2019-10-21T14:08:22.497 回答
2

是的,它使用颜色资产,并且外观设置为 Any、Dark

然后使用资产名称和 UIColor(named: "AssetName") 不需要任何版本检查或检查界面样式

于 2019-10-21T14:09:08.407 回答
0

我添加到资产附加元素 -颜色集并确定 2 种颜色 - 用于浅色和深色主题(来源:https ://skalolaskovy.ru/xcode/556-ios-dark-theme-support-simple-implementation俄罗斯文章)。您可以根据需要创建一些颜色集。

于 2021-01-10T15:33:14.993 回答