iOS 12中新的iOS 13系统颜色的后备行为

Fra*_*gel 2 uikit ios ios13 ios-darkmode

我目前采用的是暗模式,我发现在iOS 12中运行该应用程序时,也可以在Interface Builder 中使用像systemBackground和这样的新系统颜色。 13光模式。因此很明显,运行时以某种方式将这些颜色转换为iOS 12。label

有谁知道引擎盖下会发生什么以及是否有方便的方法可以在代码中实现相同目的?

rma*_*ddy 7

如果查看情节提要的XML,您将看到类似以下内容的内容:

<color key="backgroundColor" xcode11CocoaTouchSystemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
Run Code Online (Sandbox Code Playgroud)

Xcode 11增加了对两种颜色的支持。无论哪种机制在运行时将.storyboard文件转换为动作,都具有它需要知道用于iOS 13的颜色以及用于iOS 12及更低版本的颜色的信息。

在代码中,您需要以下内容:

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