Fallback behavior for new iOS 13 system colors in iOS 12(iOS 12 中新的 iOS 13 系统颜色的后备行为)
问题描述
我目前正在采用暗模式,我认为在 Interface Builder 中使用新的系统颜色(如 systemBackground
和 label
也可以正常工作 在 iOS 12 中运行应用程序时.我预计会出现编译器错误,但应用程序看起来像在 iOS 13 轻量模式下.所以很明显,运行时以某种方式将这些颜色转换为 iOS 12.
I’m currently adopting to Dark Mode and I figured that using the new system colors like systemBackground
and label
in Interface Builder also just works when running the app in iOS 12. I half expected to get a compiler error, but instead the app looks like in iOS 13 light mode. So obviously the runtime somehow translates those colors for iOS 12.
有谁知道幕后发生了什么,是否有一种方便的方法可以在代码中实现相同的目标?
Does anyone know what happens under the hood and if there is a convenient way to achieve the same in code?
推荐答案
如果你查看 storyboard 的 XML,你会看到如下内容:
If you look at the XML of the storyboard, you will see something like:
<color key="backgroundColor" xcode11CocoaTouchSystemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
Xcode 11 正在增加对这两种颜色的支持.无论哪种机制在运行时将 .storyboard 文件转换为操作,都具有它需要知道哪种颜色用于 iOS 13 以及哪种颜色用于 iOS 12 及更早版本的信息.
Xcode 11 is adding support for both colors. Whatever mechanism converts the .storyboard file into actions at runtime has the information it needs to know which color to use for iOS 13 and which color to use for iOS 12 and earlier.
在代码中,您需要如下内容:
In code you need something like the following:
extension UIColor {
class var mySystemBackground: UIColor {
if #available(iOS 13, *) {
return .systemBackground
} else {
return .white
}
}
}
这篇关于iOS 12 中新的 iOS 13 系统颜色的后备行为的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:iOS 12 中新的 iOS 13 系统颜色的后备行为


基础教程推荐
- Kivy Buildozer 无法构建 apk,命令失败:./distribute.sh -m “kivy"d 2022-01-01
- Android:对话框关闭而不调用关闭 2022-01-01
- 在 gmail 中为 ios 应用程序检索朋友的朋友 2022-01-01
- 如何让对象对 Cocos2D 中的触摸做出反应? 2022-01-01
- UIWebView 委托方法 shouldStartLoadWithRequest:在 WKWebView 中等效? 2022-01-01
- android 应用程序已发布,但在 google play 中找不到 2022-01-01
- 当从同一个组件调用时,两个 IBAction 触发的顺序是什么? 2022-01-01
- 如何在 iPhone 上显示来自 API 的 HTML 文本? 2022-01-01
- 如何在没有IB的情况下将2个按钮添加到右侧的UINavigationbar? 2022-01-01
- 如何在 UIImageView 中异步加载图像? 2022-01-01