2016-02-13 97 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) 
     } 
    } 
}