10

だから...アップルのドキュメントに従ってライトモードを強制することにより、iOS 13ダークモードを無効にするようにアプリを設定しようとしましたが、エミュレーターではすべての試行が正常に機能しますが、実際のデバイスで試しても何も起こりません.コードを変更したことがない

最初の試み

ウィンドウ、ビュー、またはビュー コントローラーのインターフェイス スタイルをオーバーライドする

このコードサンプルをviewDidLoad()に入れようとしました

何も変わっていません

if #available(iOS 13.0, *) {
   overrideUserInterfaceStyle = .light
} else {
  // Fallback on earlier versions
}

2 回目の試行

ダークモードを完全にオプトアウトする

システムは、iOS 13.0 以降の SDK にリンクされたアプリを自動的にオプトインして、明るい外観と暗い外観の両方を選択します。アプリのダーク モードのサポートに取り組むために余分な時間が必要な場合は、アプリの Info.plist ファイルに UIUserInterfaceStyle キー (値は Light) を含めることで、一時的にオプトアウトできます。このキーを Light に設定すると、システムはユーザーの設定を無視し、常に明るい外観をアプリに適用します。

何も変わっていません

Apple ドキュメント: iOS アプリの特定のインターフェイス スタイルの選択

アプリをライトモードでのみ設定する方法を誰かが知っていれば...とても感謝しています:D

4

4 に答える 4

5
if #available(iOS 13, *) {
    window.overrideUserInterfaceStyle = .light
}

動作するはずです。AppDelegateあなたのでそれを呼び出しますdidFinishLaunchingWithOptions

于 2019-10-29T14:48:10.730 に答える
2

iOS 13 以降のバージョンのウィンドウ UserInterfaceStyle を変更します。設定するだけ

UIApplication.shared.changeStatusBarStyle(.light)

また

UIApplication.shared.changeStatusBarStyle(.dark)

毎回ウィンドウを変更した後。

extension UIApplication {

        enum StatusColor {

            case dark, light
        }

        func changeStatusBarStyle(_ mode: StatusColor = .light) {

            if #available(iOS 13.0, *) {

                guard let appDelegate = delegate as? AppDelegate else { return }

                var interfaceStyle: UIUserInterfaceStyle

                switch mode {
                case .dark:
                    interfaceStyle = .dark
                default:
                    interfaceStyle = .light
                }

                appDelegate.window?.overrideUserInterfaceStyle = interfaceStyle
            }
        }
    }

ご不明な点がございましたら、お知らせください。

于 2020-04-03T00:59:38.997 に答える