2

我们为 3 个不同的应用程序设置了 3 个目标,它们提供了相似的功能集但不同的 UI。所有这 3 个目标都有不同的 .xcassets 文件。但现在根据 Apple 4.3 指南,他们要求我们创建一个容器并处理来自同一个容器的不同 UI。

现在,由于我们已经为不同的目标提供了不同的图像资产文件,我如何以编程方式在不同的 .xcassets 文件之间切换。

4

2 回答 2

0

首先,我创建了多个图像版本是相同的 xcasset 文件,然后我为 UIImage 创建了一个扩展名并编写了便利初始化程序,我在其中检查当前目标并相应地分配图像名称

extension UIImage {

convenience init?(editableNamed: String) {
    let newName = appDel.target != "target1" ? editableNamed : "\(editableNamed)_target1"
    if (UIImage(named: newName) != nil) {
        self.init(named: newName)
    }
    else {
        self.init(named: editableNamed)
    }
}

所以每当我分配像

cell.imgCheck.image = UIImage(editableNamed: "iconCheck")

它检查当前目标,然后从 xcasset 文件中分配适当的图像。

于 2019-09-09T05:07:29.403 回答
0

您可以xcassets为多个目标设置多个,假设您有 A、B、C 目标,并且xcassets每个目标有三个不同的目标,您可以通过两种方式解决此问题:

  1. 为不同的目标添加同名图片,直接访问图片。Xcode 将运行时访问特定的xcassets图像。

  2. 在访问图像时添加对不同目标的检查

编码示例:

if target == "A" {
   let imageView = UIImageView(image: UIImage(named: "firstImage"))
}
if target == "B" {
  let imageView = UIImageView(image: UIImage(named: "secondImage"))
}
if target == "C" {
  let imageView = UIImageView(image: UIImage(named: "thirdImage"))
}
于 2019-02-18T07:33:26.077 回答