如何告诉iOS 11中的智能反转不反转我的应用程序颜色并检测它是否已启用?



iOS 11 有一个名为"智能反转颜色"的新功能,我想在我的应用程序中利用它。我已经在我的应用程序中实现了自己的暗模式,因此在启用智能反转时,我将自己执行"颜色反转"过程。我想知道的是:

  • 如何告诉 iOS 11 该应用程序具有深色界面并且不会反转颜色,类似于 iOS 10+ 中的 iOS 时钟应用程序?
  • 如何检测启用了哪种反转颜色,特别是"智能反转"或"经典反转"?

我已经在Google,StackOverflow和Apple开发人员网站上搜索了一段时间,但仍然找不到答案。

提前感谢!

更新:

多亏了@Toma的回答,我成功地阻止了iOS 11在我的应用程序中反转视图。现在我有另一个问题...

对于检测部分,似乎UIAccessibility.isInvertColorsEnabled(Swift 4.2)只有在智能反转打开(iOS 11)时才会返回true。至少现在对我来说已经足够了。我现在想知道如何找出经典反转何时打开。如果您知道如何操作,请在下面发布更新的答案!谢谢!

请参阅 iOS 11UIView的属性可访问性忽略了 InvertColors。

忽略所有 UIImageView 的智能反转。在应用委托中设置

if #available(iOS 11.0, *) {
UIImageView.appearance().accessibilityIgnoresInvertColors = true
}

Swift 4.2

要检查它当前是否启用了智能反转,您可以使用UIAccessibility.isInvertColorsEnabled. 您还可以通过观察UIAccessibility.invertColorsStatusDidChangeNotification来获得更改时的通知:

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

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

}
}

相关内容

  • 没有找到相关文章

最新更新