web-dev-qa-db-fra.com

Comment dire à Smart Invert dans iOS 11 de ne pas inverser les couleurs de mon application et de détecter si elle est activée?

iOS 11 a une nouvelle fonctionnalité appelée "Smart Invert Colors", et je veux en profiter dans mon application. J'ai déjà mon propre mode sombre implémenté dans mon application, donc je ferai moi-même le processus "d'inversion des couleurs" lorsque Smart Invert est activé. Ce que je veux savoir c'est:

  • Comment puis-je dire à iOS 11 que l'application a une interface sombre et n'inverse pas les couleurs, similaire à l'application Horloge iOS dans iOS 10+?
  • Comment détecter quel type de couleurs inversées, en particulier "Smart Invert" ou "Classic Invert", est activé?

J'ai cherché partout sur Google, StackOverflow et Apple depuis un certain temps maintenant et je n'ai toujours pas trouvé la réponse.

Merci d'avance!

Mise à jour:

Grâce à @ réponse de Toma , j'ai réussi à empêcher iOS 11 d'inverser les vues dans mon application. Maintenant, j'ai un autre problème ...

Pour la partie détection, il apparaît que UIAccessibility.isInvertColorsEnabled (Swift 4.2) renverra uniquement true si Smart Invert est activé (iOS 11). Au moins ça me suffit, pour l'instant. Je me demande maintenant comment savoir quand Classic Invert est activé. Postez une réponse mise à jour ci-dessous si vous savez comment le faire! Merci!

30
LWJ

Voir la propriété de iOS 11 UIViewaccessibilityIgnoresInvertColors .

35
toma

Ignorez l'inversion intelligente pour tous les UIImageViews. Définir dans le délégué d'application

if #available(iOS 11.0, *) {
   UIImageView.appearance().accessibilityIgnoresInvertColors = true
}
8
Arnoldas Liudžius

Swift 4.2

Pour vérifier si le Smart Invert est actuellement activé, vous pouvez utiliser UIAccessibility.isInvertColorsEnabled . Vous pouvez également recevoir une notification en cas de changement en observant UIAccessibility.invertColorsStatusDidChangeNotification :

NotificationCenter.default.addObserver(forName: UIAccessibility.invertColorsStatusDidChangeNotification,
                                       object: nil,
                                       queue: OperationQueue.main) {
                                        [weak self] _ in

  if UIAccessibility.isInvertColorsEnabled {
    // smart invert is enabled
  } else {

  }
}
3
Orkhan Alikhanov