33 votes

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 Inverser les Couleurs", et je veux profiter de mon application. J'ai déjà mon propre mode noir mis en œuvre dans mon application, je vais donc faire de la "inversion des couleurs" processus de moi-même quand Smart Inversion est activée. Ce que je veux savoir, c'est:

  • Comment dois-je dire à iOS 11 que l'application dispose d'un sombre interface et de ne pas inverser les couleurs, semblable à iOS application Horloge dans iOS 10+?
  • Comment puis-je détecter le type d'Inverser les Couleurs, particulièrement Intelligent "Inverser" ou "Classique Inverser", est-il activé?

J'ai cherché partout sur Google, StackOverflow, et Apple Développeur de Site web pour un certain temps maintenant, et ne pouvait pas trouver la réponse.

Merci à l'avance!

Mise à jour:

Merci à @Toma la réponse, j'ai réussi à l'empêcher iOS 11 à partir de l'inversion de vues dans mon application. Maintenant j'ai un autre problème...

Pour la partie détection, il semble que l' UIAccessibility.isInvertColorsEnabled (Swift 4.2) ne retournera true si Intelligente Inverser est sur iOS (11). Au moins, c'est assez pour moi, pour l'instant. Je vais maintenant me demandais comment savoir quel Classique de l'Inversion est sur. Poster une mise à jour de réponse ci-dessous si vous savez comment faire! Merci!

38voto

toma Points 1263

Voir iOS 11 UIView accessibilité de la propriétéIgnoresInvertColors.

8voto

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
}
 

5voto

Orkhan Alikhanov Points 2815

Swift 4.2

Pour vérifier si il est intelligent inverser 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 {

  }
}

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