web-dev-qa-db-fra.com

Pourquoi mon application iOS ne désactive-t-elle pas le mode sombre?

Alors ... J'ai essayé de configurer mon application pour désactiver le mode sombre d'iOS 13 en forçant le mode clair en fonction de la Apple, dans l'émulateur toutes les tentatives fonctionnent bien, mais quand j'essaie sur le vrai appareil, rien ne se passe, c'est comme si je n'avais jamais changé mon code

Première tentative

Remplacer le style d'interface pour une fenêtre, une vue ou un contrôleur de vue

J'ai essayé de mettre cet exemple de code dans mon viewDidLoad ()

Rien n'a changé

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

Deuxième tentative

Désactiver complètement le mode sombre

Le système opère automatiquement dans n'importe quelle application liée au SDK iOS 13.0 ou ultérieur aux apparences claires et sombres. Si vous avez besoin de plus de temps pour travailler sur la prise en charge du mode sombre de votre application, vous pouvez temporairement vous désabonner en incluant la clé UIUserInterfaceStyle (avec une valeur de lumière) dans le fichier Info.plist de votre application. La définition de cette clé sur Light fait que le système ignore les préférences de l'utilisateur et applique toujours une apparence claire à votre application.

Rien n'a changé

Documentation Apple: Choix d'un style d'interface spécifique pour votre application iOS

Si quelqu'un sait comment je règle mon application uniquement en mode lumière ... je vous en serai très reconnaissant: D

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

Devrait marcher. Appelez-le dans votre AppDelegatedidFinishLaunchingWithOptions.

1
ChrisTheGreat

Modifiez la fenêtre UserInterfaceStyle pour la version iOS 13+. Il suffit de régler

UIApplication.shared.changeStatusBarStyle(.light)

ou

UIApplication.shared.changeStatusBarStyle(.dark)

après avoir changé de fenêtre à chaque fois.

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
            }
        }
    }

En cas de confusion, veuillez me le faire savoir.

0
Amrit Tiwari