暗模式不调用 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.