Как узнать централизованно, когда стиль пользовательского интерфейса (темный / светлый) меняется в iOS?

У меня есть приложение для iOS, у которого была своя собственная система тем (стиль темного / светлого пользовательского интерфейса) до того, как iOS 13 представила его изначально. Это частично достигается с помощью UIAppearance методы для различных элементов пользовательского интерфейса, таких как элементы кнопок панели, сегментированные элементы управления и тому подобное.

Чтобы интегрировать мои темы со светлыми и темными стилями iOS, я бы хотел автоматически переключать мои темы, когда система переключается между темным и светлым режимами. Я могу сделать это в основном путем реализации traitCollectionDidChange в различных классах контроллера просмотра и просмотра и вызова собственных методов обновления темы, если стиль пользовательского интерфейса изменился. Но мне также нужно вызвать обновление настройки UIAppearance, и я хотел бы сделать это только один раз для изменения стиля пользовательского интерфейса системы.

Мой вопрос: как мне узнать, в одном месте, когда изменился светлый / темный режим системы iOS? Я надеюсь, что цветовой эквивалент UIContentSizeCategoryDidChangeNotification, Это также означало бы менее повторяющуюся реализацию кода traitCollectionDidChange везде.

Я мог бы вызвать это на traitCollectionDidChange в моем контроллере корневого представления, но после того, как я реализовал поддержку нескольких сцен для iPadOS, у меня больше не осталось одного "корневого" контроллера представления.

0 ответов

Другие вопросы по тегам