什么是UIImages的动态提供程序等效项?

问题描述 投票:0回答:1

我们可以使用动态提供程序扩展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呢?

我知道您可以使用此方法

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

问题是,如果应用程序在后台发生更改,则此方法不会检测到更改。颜色动态方法可以。

任何想法

ios uiimage uicolor ios-darkmode
1个回答
0
投票

您正在寻找UIImageAsset类:

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

[基本上,您将图像资产与UIImage的版本一起用于不同的特征集合,并在具有图像及其对应特征集合的图像资产上调用register

© www.soinside.com 2019 - 2024. All rights reserved.