我的应用程序使用自定义颜色主题,但iOS13用户可以选择进入深色模式。
我认为我可以简单地在
非常基础:
我认为我可以简单地在
ViewController的traitCollectionDidChange()
中更新我的颜色,但由于某种原因,此函数仅在用户第一次更改iOS设置界面样式时调用。
尽管这对大多数用户来说可能已经足够,但理想情况下,每次用户更改其iOS设置时都应调用traitCollectionDidChange()
。非常基础:
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
super.traitCollectionDidChange(previousTraitCollection)
print(#function)
guard traitCollection.userInterfaceStyle != previousTraitCollection?.userInterfaceStyle else { return }
NotificationCenter.default.post(name: NSNotification.Name(Keys.Notifications.updateColorTheme), object: nil)
}
我打开我的应用程序,然后离开它,在iOS设置中更改外观:下次我打开应用程序时(是打开而不是启动),上述函数将被调用并更新应用程序的颜色。 现在,当我重复相同的过程时,该函数不再被调用。
traitCollectionDidChange
只在浅色/深色模式更改时被调用。实际上,traitCollectionDidChange
会因为很多原因而被调用。你应该检查浅色/深色模式是否发生了变化,这样你才能在适当的时候调用你的通知。 - rmaddy