Мое приложение использует пользовательские цветовые темы, но пользователи iOS13 могут выбрать следующий темный режим.
Я думал, что могу просто обновить свои цвета в ViewController's
traitCollectionDidChange()
, но по какой-то причине эта функция толькоПри первом вызове пользователь меняет стиль интерфейса в настройках iOS. Хотя этого может быть достаточно для большинства пользователей, в идеале traitCollectionDidChange()
следует вызывать каждый раз, когда пользователь меняет свои настройки iOS.
Просто очень просто:
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
super.traitCollectionDidChange(previousTraitCollection)
print(#function)
guard traitCollection.userInterfaceStyle != previousTraitCollection?.userInterfaceStyle else { return }
NotificationCenter.default.post(name: NSNotification.Name(Keys.Notifications.updateColorTheme), object: nil)
}
Я запускаю свое приложение, оставляюэто, изменить внешний вид в настройках iOS: при следующем открытии приложения (открыть, не запускать) вызывается указанная выше функция, и приложение обновляет цвета. Теперь, когда я повторяю тот же процесс, функция больше не вызывается.