【问题标题】:Looping through array of strings (iterating images)遍历字符串数组(迭代图像)
【发布时间】:2016-02-13 03:16:25
【问题描述】:

我对 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)”部分,但这会返回错误。

【问题讨论】:

  • 你想把文字写入图片吗?
  • 不,我想弄清楚如何将字符串数组合并到将遍历它们以对其进行动画处理的函数中。我有很多图像,命名为“aquarium-0”、“aquarium-1”、“aquarium-2”...“aquarium-29”、“3d-0”...“3d-5”等.我正在尝试找出一种紧凑的方式来为它们设置动画
  • 很抱歉 - 很难准确地弄清楚您要做什么。您是要获取现有名称的列表,例如“水族馆”、“3d”等,并将“-0”、“-1”等附加到名称上,还是要获取图像列表已经有了最后带有数字的名称并想出一种循环浏览它们的方法?
  • 后者!如果不清楚,请见谅!我的措辞有问题
  • 如果您正在寻找答案,请告诉我。这很难说,但我想我明白你在说什么。

标签: ios arrays swift loops


【解决方案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)
        }
    }
}

【讨论】:

    【解决方案2】:

    我认为您可能需要的是传入文件名列表,并以与您开始时类似的方式将图像添加到数组中。应该是这样的:

    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)
    

    【讨论】:

      猜你喜欢
      • 2017-04-22
      • 1970-01-01
      • 2014-06-16
      • 2023-03-23
      • 1970-01-01
      • 1970-01-01
      • 2015-09-09
      • 2017-10-06
      • 2011-10-06
      相关资源
      最近更新 更多