Я пытаюсь увидеть, когда пользователь включил / изменил Smart Invert Colors (или обычные инвертированные цвета), чтобы настроить мой вид. Но, похоже, что изменение черты для вида сильно задерживается и / или не обновляется до следующего цикла розыгрыша. Это связано с тем, что в данный момент это представление отображается на экране, и пользователь, например, изменяет элементы специальных возможностей из Центра управления. Я имею в виду UIAccessibility.isInvertColorsEnabled
, в частности.
Существует ли элегантный способ получить это значение, как только происходит уведомление, не дожидаясь цикла рисования или заставляя обновления повторным / отложенным вызовом на view?
Прослушивание изменений:
NotificationCenter.default.addObserver(self, selector: #selector(changedColorInversion(_:)), name: UIAccessibility.invertColorsStatusDidChangeNotification, object: nil)
Внесение изменений:
@objc func changedColorInversion(_ notification: Notification) {
NotificationCenter.default.post(name: AWColorThemeChanged, object: nil)
someOtherThing.adjustSelections()
}
В каком-то другом классе viewcontroller:
func adjustSelections() {
print((UIAccessibility.isInvertColorsEnabled ? "true" : "false"))
// false right away, do a button press or call same function, then prints true
}
edit: Кажется, что все в порядке на iOS 12, но имеет эту проблему на iOS 13.