我正在使用 Swift 5.1 和 Xcode 11.1,我目前已经完成了暗模式设计的实现。
应用程序具有用户可以设置显示主题(Light,Dark,System Default)的设置,如果在用户选择主题后应用程序重新启动,它当前工作正常(我将此布尔数据保存在 UserDefaults 并在 AppDelegate 文件中设置应用程序启动时的 UIAppearance )
这是我的代码
if #available(iOS 13.0, *) {
switch AppState.appThemeStyle {
case "dark":
window?.overrideUserInterfaceStyle = .dark
break
case "light":
window?.overrideUserInterfaceStyle = .light
break
default:
window?.overrideUserInterfaceStyle = .unspecified
}
}
但是我可以看到很多应用程序在用户设置主题样式后立即更改显示主题。
我认为重新启动应用程序仅更改主题并不是一个好主意,并且主题应该在用户设置主题样式后立即更改。
我试图通过设置基本视图控制器并在 ViewWillAppear 上设置用户界面样式来做到这一点,但导航栏和选项卡栏的外观不会改变。
谁能告诉我如何处理这个?谢谢。