【发布时间】:2020-03-18 12:57:15
【问题描述】:
我最近安装了最新的 Xcode 11.2.1 并将 iOS 更新到 iPhone 设备的 13.2.3 和模拟器的 13.x。我正在尝试在我的应用程序中实现暗模式,但我只能让它与 Apple 框架的东西一起使用,比如alertControllers 等,而不是我自己的viewControllers。
使用代码我尝试使用它只是为了看看是否有效:
if #available(iOS 13, *) {
if traitCollection.userInterfaceStyle == .dark {
print("????????DARK MODE")
cell.backgroundColor = UIColor.black
}else {
print("????????LIGHT MODE")
cell.backgroundColor = UIColor.white
}
}
但它没有正确触发。当暗模式处于活动状态时,它会记录“LIGHT MODE”,但如果亮模式/正常模式处于活动状态,则反之亦然;它仍然会触发“LIGHT MODE”,但有时似乎会随机触发“DARK MODE”。
我也尝试在我的xib 文件上使用新的system colors,但是在不同模式之间切换没有任何改变。我尝试了不同的颜色,比如橙色,只是为了看看它是否显示,它确实显示了,但是在更改模式时它没有切换。
最后我尝试添加我自己的系统颜色,方法是将它们添加到资产文件夹中,将外观设置为“任何、浅色、深色”,添加替代颜色,然后在我的 xib 上使用该颜色。这给了我一个错误:Named colors do not work prior to iOS 11.0。但就像我说的,我在模拟器和设备上都使用 iOS 13,所以不确定这是怎么回事。
请注意,我已经尝试在设备或模拟器的系统偏好设置以及新的environment override 按钮中切换模式。
根本不知道交易是什么。看起来很简单,但根本无法让它工作。
【问题讨论】:
-
我发现这个特征集合非常不可靠,所以我在 viewDidLayoutSubviews 中完成了所有代码设置。但如果你使用界面生成器,我认为你可以在那里设置暗模式颜色。
标签: ios swift xib device ios-darkmode