循环遍历字符串数组(迭代图像)

时间:2016-02-13 03:16:25

标签: ios arrays swift loops

我对Swift相当新,并且在遍历图像列表时遇到一些麻烦来制作动画。我将它们全部命名为,例如" aquarium-x",x是1-29的数字,具体取决于我对特定动画的图像数量。这是我对该部分的代码

func checkAnimationImages() -> [AnyObject] {
    var i = 0
    var catGifArray = [UIImage]()
    var image = UIImage(named: "-\(i)")
    while (image != nil){
        catGifArray.append(image!)
        ++i
        image = UIImage(named: "-\(i)")
    }
   return catGifArray.map {
        return $0.CGImage as! AnyObject
    }
}

我的问题是我无法弄清楚如何将一系列字符串合并到UIImage中,因此我不需要输入所有名称。

var catGifName:[String] = [
        "3d",
        "piano1",
        "aquarium",
        "bag",
        "bitey",
        "black",
        "blackcat"]

我试图将数组的名称放在" - /(i)"部分,但这会产生错误。

2 个答案:

答案 0 :(得分:1)

看起来你需要的是一个嵌套的for循环:

var images = [UIImage]()
let catGifName = ["cat","piano","aquarium","bag"]
for name in catGifName {
    for i in 1...29 {
        if let image = UIImage(named:"\(name)-\(i)") {
            images.append(image)
        }
    }
}

答案 1 :(得分:0)

我认为您可能需要的是传入文件名列表,并以与您开始时类似的方式将图像添加到数组中。它是这样的:

func checkAnimationImages(fileNames: [String]) -> [AnyObject] {
for name in fileNames {
    var i = 0
    var catGifArray = [UIImage]()
    var image = UIImage(named: "\(name)-\(i)")
    while (image != nil){
        catGifArray.append(image!)
        ++i
        image = UIImage(named: "\(name)-\(i)")
    }
}
return catGifArray.map {
    return $0.CGImage as! AnyObject
}
}

当然,UIImage(named:...)仅在图像位于主要包中时才有效,但我认为这就是你自己设定的方式。

无论如何,你会把它称为......

self.checkAnimationImages(self.catGifNames)