ios - iOS 12 中新的 iOS 13 系统颜色的后备行为
问题描述
我目前正在采用深色模式,并且我认为在 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
}
}
}
推荐阅读
- alfresco-share - 终止Alfresco Share?
- c# - 将 IIS 中的文件下载为 zip 文件
- blazor - 验证未在 OnSubmit 上触发,但在 OnVallidSubmit 上触发
- ruby-on-rails - Activerecord 迁移多个 postgresql 数据库
- go - golang Context的正确样式和用法是什么?
- azure-devops - Azure DevOps 等到同一 CI 中的另一个构建完成
- codeigniter - 如何将两个数组从模型文件传递到控制器文件
- r - R中索引的2D / 3D图像掩码(或2D / 3D矩阵)列表中的唯一ID
- javascript - 如何单独获取对象值并推入临时变量 - jsPDF-autoTable
- python - 如何在詹金斯中运行 pytest