暗模式不调用 traitCollectionDidChange
traitCollectionDidChange is not called for dark mode
我正在 viewDidLoad
我的应用中实现深色模式。我补充说:
switch self.traitCollection.userInterfaceStyle {
case .dark:
overrideUserInterfaceStyle = .dark
case .light:
overrideUserInterfaceStyle = .light
case .unspecified:
overrideUserInterfaceStyle = .light
@unknown default:
overrideUserInterfaceStyle = .light
}
它工作得很好,但我想设置当应用程序打开时在设备上更改主题时,它会自动更改主题。所以我将 traitCollectionDidChange
添加到视图控制器
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
super.traitCollectionDidChange(previousTraitCollection)
switch self.traitCollection.userInterfaceStyle {
case .dark:
overrideUserInterfaceStyle = .dark
case .light:
overrideUserInterfaceStyle = .light
case .unspecified:
overrideUserInterfaceStyle = .light
@unknown default:
overrideUserInterfaceStyle = .light
}
}
但是从来没有调用过,我还需要做些什么吗?
提前感谢您的帮助。
您无需自行更改。
如果您使用 系统颜色,更改将自动进行(如果您不覆盖默认用户界面样式)。
删除此代码,并将颜色设置为 systemColors.
我正在 viewDidLoad
我的应用中实现深色模式。我补充说:
switch self.traitCollection.userInterfaceStyle {
case .dark:
overrideUserInterfaceStyle = .dark
case .light:
overrideUserInterfaceStyle = .light
case .unspecified:
overrideUserInterfaceStyle = .light
@unknown default:
overrideUserInterfaceStyle = .light
}
它工作得很好,但我想设置当应用程序打开时在设备上更改主题时,它会自动更改主题。所以我将 traitCollectionDidChange
添加到视图控制器
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
super.traitCollectionDidChange(previousTraitCollection)
switch self.traitCollection.userInterfaceStyle {
case .dark:
overrideUserInterfaceStyle = .dark
case .light:
overrideUserInterfaceStyle = .light
case .unspecified:
overrideUserInterfaceStyle = .light
@unknown default:
overrideUserInterfaceStyle = .light
}
}
但是从来没有调用过,我还需要做些什么吗?
提前感谢您的帮助。
您无需自行更改。 如果您使用 系统颜色,更改将自动进行(如果您不覆盖默认用户界面样式)。 删除此代码,并将颜色设置为 systemColors.