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