Как узнать централизованно, когда стиль пользовательского интерфейса (темный / светлый) меняется в iOS?
У меня есть приложение для iOS, у которого была своя собственная система тем (стиль темного / светлого пользовательского интерфейса) до того, как iOS 13 представила его изначально. Это частично достигается с помощью UIAppearance
методы для различных элементов пользовательского интерфейса, таких как элементы кнопок панели, сегментированные элементы управления и тому подобное.
Чтобы интегрировать мои темы со светлыми и темными стилями iOS, я бы хотел автоматически переключать мои темы, когда система переключается между темным и светлым режимами. Я могу сделать это в основном путем реализации traitCollectionDidChange
в различных классах контроллера просмотра и просмотра и вызова собственных методов обновления темы, если стиль пользовательского интерфейса изменился. Но мне также нужно вызвать обновление настройки UIAppearance, и я хотел бы сделать это только один раз для изменения стиля пользовательского интерфейса системы.
Мой вопрос: как мне узнать, в одном месте, когда изменился светлый / темный режим системы iOS? Я надеюсь, что цветовой эквивалент UIContentSizeCategoryDidChangeNotification
, Это также означало бы менее повторяющуюся реализацию кода traitCollectionDidChange
везде.
Я мог бы вызвать это на traitCollectionDidChange
в моем контроллере корневого представления, но после того, как я реализовал поддержку нескольких сцен для iPadOS, у меня больше не осталось одного "корневого" контроллера представления.