[英]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.