我们为 3 个不同的应用程序设置了 3 个目标,它们提供了相似的功能集但不同的 UI。所有这 3 个目标都有不同的 .xcassets 文件。但现在根据 Apple 4.3 指南,他们要求我们创建一个容器并处理来自同一个容器的不同 UI。
现在,由于我们已经为不同的目标提供了不同的图像资产文件,我如何以编程方式在不同的 .xcassets 文件之间切换。
我们为 3 个不同的应用程序设置了 3 个目标,它们提供了相似的功能集但不同的 UI。所有这 3 个目标都有不同的 .xcassets 文件。但现在根据 Apple 4.3 指南,他们要求我们创建一个容器并处理来自同一个容器的不同 UI。
现在,由于我们已经为不同的目标提供了不同的图像资产文件,我如何以编程方式在不同的 .xcassets 文件之间切换。
首先,我创建了多个图像版本是相同的 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 文件中分配适当的图像。
您可以xcassets
为多个目标设置多个,假设您有 A、B、C 目标,并且xcassets
每个目标有三个不同的目标,您可以通过两种方式解决此问题:
为不同的目标添加同名图片,直接访问图片。Xcode 将运行时访问特定的xcassets
图像。
在访问图像时添加对不同目标的检查
编码示例:
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"))
}