如何告诉 iOS 11 中的 Smart Invert 不要反转我的应用程序颜色并检测它是否已启用?
How to tell Smart Invert in iOS 11 not to invert my app colors and detect if it is enabled?
iOS 11 有一个名为 "Smart Invert Colors" 的新功能,我想在我的应用程序中利用它。我已经在我的应用程序中实现了自己的黑暗模式,所以我将在启用 Smart Invert 时自己执行 "color inversion" 过程。我想知道的是:
- 如何告诉 iOS 11 该应用程序有一个深色界面并且不会反转颜色,类似于 iOS 10+ 中的 iOS 时钟应用程序?
- 如何检测启用了哪种反转颜色,特别是 "Smart Invert" 或 "Classic Invert"?
我在 Google、Whosebug 和 Apple Developer Website 上到处搜索了一段时间,但仍然找不到答案。
提前致谢!
更新:
感谢 ,我成功地阻止了 iOS 11 在我的应用程序中反转视图。现在我有另一个问题...
对于检测部分,似乎 UIAccessibility.isInvertColorsEnabled
(Swift 4.2) 只会 return true
如果智能反转打开 (iOS 11 ).至少现在对我来说已经足够了。我现在想知道如何找出 Classic Invert 何时开启。 Post 如果您知道该怎么做,请在下面更新答案!谢谢!
参见 iOS 11 UIView
的 属性 accessibilityIgnoresInvertColors。
忽略所有 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 {
}
}
iOS 11 有一个名为 "Smart Invert Colors" 的新功能,我想在我的应用程序中利用它。我已经在我的应用程序中实现了自己的黑暗模式,所以我将在启用 Smart Invert 时自己执行 "color inversion" 过程。我想知道的是:
- 如何告诉 iOS 11 该应用程序有一个深色界面并且不会反转颜色,类似于 iOS 10+ 中的 iOS 时钟应用程序?
- 如何检测启用了哪种反转颜色,特别是 "Smart Invert" 或 "Classic Invert"?
我在 Google、Whosebug 和 Apple Developer Website 上到处搜索了一段时间,但仍然找不到答案。
提前致谢!
更新:
感谢
对于检测部分,似乎 UIAccessibility.isInvertColorsEnabled
(Swift 4.2) 只会 return true
如果智能反转打开 (iOS 11 ).至少现在对我来说已经足够了。我现在想知道如何找出 Classic Invert 何时开启。 Post 如果您知道该怎么做,请在下面更新答案!谢谢!
参见 iOS 11 UIView
的 属性 accessibilityIgnoresInvertColors。
忽略所有 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 {
}
}