如何在多个.xcassets文件之间切换

时间:2019-02-18 07:12:32

标签: ios swift xcode xcasset uiimageasset

我们为3个不同的应用程序提供了3个目标,这些应用程序提供相似的功能集,但UI不同。 所有这三个目标都具有不同的.xcassets文件。但是现在,按照Apple 4.3准则,他们要求我们创建一个容器并处理来自同一容器的不同UI。

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

2 个答案:

答案 0 :(得分: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"))
}

答案 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文件中分配适当的图像。