我目前正在采用深色模式,并且我认为在 iOS 12 中运行应用程序时systemBackground
,label
在 Interface Builder 中使用新的系统颜色也可以正常工作。我有一半预计会出现编译器错误,但应用程序看起来像在 iOS 13种灯光模式。所以很明显,运行时以某种方式将这些颜色转换为 iOS 12。
有谁知道幕后发生了什么,是否有一种方便的方法可以在代码中实现相同的目标?
我目前正在采用深色模式,并且我认为在 iOS 12 中运行应用程序时systemBackground
,label
在 Interface Builder 中使用新的系统颜色也可以正常工作。我有一半预计会出现编译器错误,但应用程序看起来像在 iOS 13种灯光模式。所以很明显,运行时以某种方式将这些颜色转换为 iOS 12。
有谁知道幕后发生了什么,是否有一种方便的方法可以在代码中实现相同的目标?
如果您查看情节提要的 XML,您将看到如下内容:
<color key="backgroundColor" xcode11CocoaTouchSystemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
Xcode 11 正在增加对这两种颜色的支持。无论哪种机制在运行时将 .storyboard 文件转换为操作,都具有它需要知道用于 iOS 13 的颜色以及用于 iOS 12 及更早版本的颜色的信息。
在代码中,您需要以下内容:
extension UIColor {
class var mySystemBackground: UIColor {
if #available(iOS 13, *) {
return .systemBackground
} else {
return .white
}
}
}