我通过添加更新了我的应用程序中的视图以支持暗模式
if #available(iOS 12.0, *) {
if self.traitCollection.userInterfaceStyle == .dark {
//Adapt to dark Bg
} else {
//Adapt to light Bg
}
}
然后,为了考虑到用户在应用程序后台运行并在切换模式后返回应用程序的情况,我在 viewDidLoad 中附加了一个观察者
if #available(iOS 12.0, *) {
NotificationCenter.default.addObserver(self, selector: #selector(willEnterForeground), name: UIApplication.willEnterForegroundNotification, object: nil)
} else {
// Fallback on earlier versions
}
触发功能
@available(iOS 12.0, *)
@objc func willEnterForeground() {
if self.traitCollection.userInterfaceStyle == .dark {
print("App moving to foreground - dark")
//Adapt to dark Bg
} else {
print("App moving to foreground - light")
//Adapt to light Bg
}
}
但是,self.traitCollection.userInterfaceStyle
仍然提供旧值,因此需要完全重新加载视图才能对界面产生所需的更新。改用UIApplication.didBecomeActiveNotification
没有区别。