如何在 iOS 中更改应用程序主题(浅色/深色)?

Ham*_*san 5 ios swift

我有一个最多有 10 个屏幕的应用程序,在设置屏幕中,我有一个开关可以在暗/亮模式之间切换。我想更改该开关上的完整应用程序主题。

目前,当我更改 iOS 默认设置中的主题时,应用程序主题也会更改。但我希望仅在我的应用程序中发生相同的行为。

到目前为止,我想到的是在用户默认值中设置一个主题变量,并在每个视图控制器上有条件地使用此代码

    view.overrideUserInterfaceStyle = // .dark // .light
Run Code Online (Sandbox Code Playgroud)

我不想使用任何第三方库。

CSm*_*ith 9

在您的应用程序委托中,didFinishLaunchingWithOptions从共享默认值中读取首选项并执行如下操作:

UIApplication.shared.keyWindow.overrideUserInterfaceStyle = preference == "dark" ? .dark : .light
Run Code Online (Sandbox Code Playgroud)

当用户更改首选项时,在“设置”视图控制器中执行相同的操作。

在窗口上设置覆盖应该照顾所有视图控制器。

  • 当我将主题条件放入场景委托文件中时,它会起作用。不过,您的回答对我帮助很大,非常感谢。 (2认同)