iOS 13 Dark mode: traitCollectionDidChange вызывается только в первый раз - PullRequest
1 голос
/ 25 октября 2019

Мое приложение использует пользовательские цветовые темы, но пользователи 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: при следующем открытии приложения (открыть, не запускать) вызывается указанная выше функция, и приложение обновляет цвета. Теперь, когда я повторяю тот же процесс, функция больше не вызывается.

...