How to tell Smart Invert in iOS 11 not to invert my app colors and detect if it is enabled?

iOS 11 has a new feature called “Smart Invert Colors”, and I want to take advantage of that in my app. I already have my own dark mode implemented in my app, so I’ll do the “color inversion” process myself when Smart Invert is enabled. What I want to know is:

  • How do I tell iOS 11 that the app has a dark interface and don’t invert colours, similar to the iOS Clock app in iOS 10+?
  • How do I detect which kind of Invert Colors, specifically “Smart Invert” or “Classic Invert”, is enabled?

I’ve searched everywhere at Google, StackOverflow, and Apple Developer Website for some time now and still couldn’t find the answer.

  • Wrong color in Interface Builder
  • How To Change Tab bar color in Xcode
  • Change tab bar tint color on iOS 7
  • Get the right color in iOS7 translucent navigation bar
  • iOS — detect the color of a pixel?
  • Changing MFMailComposeViewController's toolbar color
  • Thanks in advance!


    Thanks to @Toma’s answer, I successfully managed to prevent iOS 11 from inverting views in my app. Now I have another problem…

    For the detection part, it appears that UIAccessibilityIsInvertColorsEnabled() will only return true if Smart Invert is on (iOS 11). At least it’s enough for me, for now. I’m now wondering how to find out when Classic Invert is on. Post an updated answer below if you know how to do so! Thanks!

    Solutions Collect From Internet About “How to tell Smart Invert in iOS 11 not to invert my app colors and detect if it is enabled?”

    See iOS 11 UIView‘s property accessibilityIgnoresInvertColors.