我们为3个不同的应用程序提供了3个目标,这些应用程序提供相似的功能集,但UI不同。 所有这三个目标都具有不同的.xcassets文件。但是现在,按照Apple 4.3准则,他们要求我们创建一个容器并处理来自同一容器的不同UI。
现在,由于我们已经为不同的目标使用了不同的图像资产文件,我该如何以编程方式在不同的.xcassets文件之间进行切换。
答案 0 :(得分:0)
您可以为多个目标设置多个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"))
}
答案 1 :(得分:0)
首先我创建了多个图像版本相同的xcasset文件,然后 我为UIImage创建了一个扩展,并编写了便捷的初始值设定项,在其中检查当前目标并相应地分配了图像名称
tabItem
因此,每当我分配
之类的图片时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)
}
}
它检查当前目标,然后从xcasset文件中分配适当的图像。