簡體   English   中英

遍歷字符串數組(迭代圖像)

[英]Looping through array of strings (iterating images)

我對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)”部分,但這會返回錯誤。

看起來您需要的是嵌套的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)
        }
    }
}

我認為您可能需要傳遞文件名列表,並以與開始時類似的方式將圖像添加到數組中。 就像這樣:

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM