我有一个最多有 10 个屏幕的应用程序,在设置屏幕中,我有一个开关可以在暗/亮模式之间切换。我想更改该开关上的完整应用程序主题。
目前,当我更改 iOS 默认设置中的主题时,应用程序主题也会更改。但我希望仅在我的应用程序中发生相同的行为。
到目前为止,我想到的是在用户默认值中设置一个主题变量,并在每个视图控制器上有条件地使用此代码
view.overrideUserInterfaceStyle = // .dark // .light
Run Code Online (Sandbox Code Playgroud)
我不想使用任何第三方库。
在您的应用程序委托中,didFinishLaunchingWithOptions从共享默认值中读取首选项并执行如下操作:
UIApplication.shared.keyWindow.overrideUserInterfaceStyle = preference == "dark" ? .dark : .light
Run Code Online (Sandbox Code Playgroud)
当用户更改首选项时,在“设置”视图控制器中执行相同的操作。
在窗口上设置覆盖应该照顾所有视图控制器。
| 归档时间: |
|
| 查看次数: |
10672 次 |
| 最近记录: |