我已经在我的iOS应用中实现了dark mode
,并且在运行时不会立即发生更改。我认为这与views
并没有一直像在android
中一样重新创建自己有关。
例如,从应用程序中退出,然后进行设置和更改主题,然后再次返回应用程序,这是行不通的。直到alertControllers
之类的Apple相关框架才发生更改。要使dark mode
工作,我必须单击一个新的view
,然后再次回到旧的view
。
我尝试在委托中添加dark mode
代码,因为我认为此代码将在您每次重新输入应用程序时都运行,但并非如此。
那么,关于如何进行这项工作的任何想法?例如,是否存在每次我重新进入应用程序时都运行的委托,或者我是否可以拥有dark mode
更改的观察者?
答案 0 :(得分:4)
您可以实现此方法以“监听” TraitCollection的更改:
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
// do whatever you want to do
}
此外,正如Gergely所述,请尝试将xcassets用于颜色和图像,以便它们根据当前的TraitCollection动态更改。
答案 1 :(得分:1)
警报视图控制器会进行更新,因为它们的文本和背景使用了响应式系统颜色,默认情况下,该颜色具有亮和暗模式的版本,并且在模式更改后会自动更新。
如果使用颜色和图像资产,则可以对自定义视图执行相同的操作。这是一个很好的操作方法概述:Medium Article。
Apple官方文档还对如何支持暗模式进行了很好的概述:Supporting Dark Mode in Your Interface。