Мое приложение широко использует CAGradientLayers, которые, по-видимому, не обновляют свои цвета автоматически при переключении темного / светлого режима. Они будут обновлять свои цвета, когда приложение закрывается и снова открывается.
Я знаю, что могу использовать следующий код, чтобы обнаружить изменение и перезагрузить каждое представление по отдельности.
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
//
}
Однако я ищу исправление, которое не требует от меня обновлять каждое представление по отдельности. Есть ли способ обнаружить изменение светлого / темного режима (возможно, в делегате приложения) и заставить все приложение перезагрузиться (как если бы оно было принудительно закрыто и снова открыто)?
traitCollectionDidChange
, вы перерисовываете свои градиенты, используя альтернативный набор цветов. Apple подробно объяснила это в видеоролике WWDC 2019 по этой теме. - person matt   schedule 24.10.2019