8

私は Swift 5.1 と Xcode 11.1 を使用しており、現在ダーク モードデザインの実装を完了しています。

アプリには、ユーザーが表示テーマ ( LightDarkSystem 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 にユーザー インターフェイス スタイルを設定してそれを試みましたが、ナビゲーション バーとタブ バーの外観は変わりません。

誰かがこれを処理する方法を教えてもらえますか? ありがとう。

4

2 に答える 2

1

overrideUserInterfaceStyle を設定することで、ユーザー インターフェース スタイルをすぐに変更できます。ユーザーがテーマ スタイルを選択できるこのコードを追加しました。

guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {
   return
}
appDelegate.changeTheme(themeVal)

これが他の人に役立つことを願っています

于 2019-10-28T10:16:30.453 に答える