暗模式不会立即更新

时间:2019-12-06 09:02:55

标签: ios ios-darkmode

我已经在我的iOS应用中实现了dark mode,并且在运行时不会立即发生更改。我认为这与views并没有一直像在android中一样重新创建自己有关。

例如,从应用程序中退出,然后进行设置和更改主题,然后再次返回应用程序,这是行不通的。直到alertControllers之类的Apple相关框架才发生更改。要使dark mode工作,我必须单击一个新的view,然后再次回到旧的view

我尝试在委托中添加dark mode代码,因为我认为此代码将在您每次重新输入应用程序时都运行,但并非如此。

那么,关于如何进行这项工作的任何想法?例如,是否存在每次我重新进入应用程序时都运行的委托,或者我是否可以拥有dark mode更改的观察者?

2 个答案:

答案 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