Я использую Swift 5.1 и Xcode 11.1, и в настоящее время я завершил реализацию Темный режим дизайн.
В приложении есть настройка, в которой пользователь может установить тему отображения ( Светлый , Dark , System Default ) и в настоящее время работает нормально, если приложение перезапускается после выбора пользователем темы (я сохраняю эти данные bool в UserDefaults и задаю UIAppearance при запуске приложения в файле AppDelegate)
Вот мой код
if #available(iOS 13.0, *) {
switch AppState.appThemeStyle {
case "dark":
window?.overrideUserInterfaceStyle = .dark
break
case "light":
window?.overrideUserInterfaceStyle = .light
break
default:
window?.overrideUserInterfaceStyle = .unspecified
}
}
Но я вижу, что многие приложения изменяют темы отображения сразу после того, как пользователь устанавливает стиль темы.
Я думаю, что перезапускать приложение не очень хорошая идеятолько изменение темы и тема должна меняться сразу после того, как пользователь установил стиль темы.
Я попытался сделать это, установив базовый viewcontroller и установив стиль интерфейса пользователя на ViewWillAppear, но внешний вид панели навигации и панели вкладок не изменился.
Может кто-нибудь сказать, пожалуйста, как с этим справиться? Спасибо.