我对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 :(得分: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)