我的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张图片制作此代码......任何人都有更好的主意? ; - )
答案 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]
}