随机图像到(很多)图像视图

时间:2016-06-13 15:09:37

标签: ios swift image uiimage

可悲的是,我有36张UIImages,需要为每张图像设置一个随机图像。

我的6张图片被命名;

"Owl1"
"Owl2"
"Owl3"
"Owl4"
"Owl5"
"Owl6"

所以,我想为我的36个不同的UIImages设置一个随机图像。做这个的最好方式是什么?数组?这是我的"尝试"到目前为止。

var images: [UIImage] = [
UIImage(named: "Owl1")!,
UIImage(named: "Owl2")!,
UIImage(named: "Owl3")!,
UIImage(named: "Owl4")!,
UIImage(named: "Owl5")!,
UIImage(named: "Owl6")!
]

var randomUIImage = [Image1, Image2, Image3, Image4, Image5...]
        randomUIImage.shuffleInPlace()

randomUIImage[0].image = images[0]
randomUIImage[1].image = images[1]

但我意识到这不起作用,我无法为所有36张图片制作此代码......任何人都有更好的主意? ; - )

2 个答案:

答案 0 :(得分:3)

您可以拥有一组图像名称和一组图像来保存它们。

var imageNames:[String] = ["Owl1", "Owl2"....etc]
var owlImages:[UIImage] = []

然后随机附加图像

for index in 0...imageNames.count - 1 {
    var randomInt = Int(arc4random_uniform(UInt32(imageNames.count)) //a random int from 0 to the size of your array
    owlImages.append(UIImage(named: imageNames[randomInt] //add the random image to the array
}

答案 1 :(得分:3)

提示:您可以使用范围+地图来创建图像数组。

let images = (1...6).map { UIImage(named: "Owl\($0)") }

(1...6)生成Ints的集合,从1到6(包括6),并且map我们为每个Int创建一个UIImage的新实例,使用它们进行命名 - 因为你按顺序命名你的图像,所以很方便。这就像做一个循环并在循环内的数组中添加UIImage的新内容,使用命名索引:“Owl1”,“Owl2”等。

如果您在阵列中也有UIImageViews,则可以为图像分配循环。

这是一个例子(我没有在Xcode上验证,但它应该接近你需要的):

for view in imageViewsArray { // the array with the 36 imageViews
    // a random index for the array of 6 images
    let randomIndex = Int(arc4random_uniform(UInt32(images.count))
    // assign the randomly chosen image to the image view
    view.image = images[randomIndex]
}