Что эквивалентно провайдеру Dynami c для UIImages? - PullRequest
0 голосов
/ 03 апреля 2020

Мы можем использовать динамические c провайдеры для расширения классов UIColor и иметь цвета, которые немедленно изменяются на темные и светлые режимы, как это

extension UIColor {
  static var myControlBackground: UIColor {
      return UIColor { (traits) -> UIColor in
        // Return one of two colors depending on light or dark mode
        return traits.userInterfaceStyle == .dark ?
          UIColor(red: 0.5, green: 0.4, blue: 0.3, alpha: 1) :
          UIColor(red: 0.3, green: 0.4, blue: 0.5, alpha: 1)
      }
  }
}

Но как насчет UIImages?

I знать, что вы можете использовать этот метод

override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
  if traitCollection.hasDifferentColorAppearance(comparedTo:
                                                 previousTraitCollection) {
    // Color change detected.
    // Adjust the interface accordingly.
  }
}

проблема в том, что этот метод не обнаруживает изменения, если приложение находится в фоновом режиме, когда происходит изменение. И метод динамического цвета c делает.

Любые идеи

1 Ответ

2 голосов
/ 03 апреля 2020

Вы ищете класс UIImageAsset:

https://developer.apple.com/documentation/uikit/uiimageasset

По сути, вы создаете ресурс изображения вместе с версиями UIImage для различных коллекций признаков, и вызовите register для актива изображения с изображением вместе с соответствующей коллекцией признаков.

...