56 votes

Comment puis-je vérifier si le mode sombre est activé dans iOS/iPadOS ?

À partir d'iOS/iPadOS 13, un style d'interface utilisateur sombre est disponible, similaire au mode sombre introduit dans macOS Mojave. Comment puis-je vérifier si l'utilisateur a activé le mode sombre à l'échelle du système ?

47voto

huync Points 211

Pour iOS 13 , vous pouvez utiliser cette propriété pour vérifier si le style actuel est en mode sombre ou non :

 if #available(iOS 13.0, *) {
    if UITraitCollection.current.userInterfaceStyle == .dark {
        print("Dark mode")
    }
    else {
        print("Light mode")
    }
}

22voto

Ely Points 1025

Comme mentionné par daveextreme, la vérification du style d'interface utilisateur de la vue actuelle ne renvoie pas toujours le style du système lorsque vous utilisez la propriété overrideUserInterfaceStyle Dans de tels cas, il peut être préférable d'utiliser le code suivant :

 switch UIScreen.main.traitCollection.userInterfaceStyle {
case .light: //light mode
case .dark: //dark mode
case .unspecified: //the user interface style is not specified
}

16voto

jbiser361 Points 853

dans objective-c, vous voudriez faire:

 if( self.traitCollection.userInterfaceStyle == UIUserInterfaceStyleDark ){

        //is dark
}else{

    //is light

}

13voto

Yanis Points 139

1/ pour UIView/UIViewController :

 self.traitCollection.userInterfaceStyle == .dark

2/ pour statique ou autre :

 UITraitCollection.current.userInterfaceStyle == .dark

MAIS:

 //Never use this! You will get wrong value in app extensions (ex. ToDay widget)
UIScreen.main.traitCollection.userInterfaceStyle == .dark //WRONG!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X