2016-02-13 101 views
1

我對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)」部分,但是返回一個錯誤。

+0

你要寫入圖像的文本? –

+0

不,我想弄清楚如何將字符串數組合併到函數中,以遍歷它們來爲它們設置動畫。我有很多圖片,分別命名爲「aquarium-0」,「aquarium-1」,「aquarium-2」...「aquarium-29」,「3d-0」...「3d-5」等等。我試圖找出一種緊湊的方式來動畫所有人 – clearwater223

+0

我很抱歉 - 很難弄清楚你想要做什麼。您是否想要獲取「水族館」,「3d」等現有名稱的列表,並將「-0」,「-1」等附加到名稱上,或者您是否嘗試拍攝圖像列表那個已經有了最後一個號碼的人,並找出了一個循環的方法?後者! – creeperspeak

回答

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) 
+0

它的作品!非常感謝!! – clearwater223

1

它看起來像你需要的是一個嵌套的循環:

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) 
     } 
    } 
}