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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...