随机图像到(许多)图像视图
Posted
技术标签:
【中文标题】随机图像到(许多)图像视图【英文标题】:Random images to (many) Image Views 【发布时间】:2016-06-13 15:09:36 【问题描述】:遗憾的是,我有 36 个 UIImage,需要为每个设置一个随机图像。
我的 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 个图像编写此代码...有人有更好的主意吗? ;-)
【问题讨论】:
【参考方案1】:提示:您可以使用范围 + 地图来创建图像数组。
let images = (1...6).map UIImage(named: "Owl\($0)")
(1...6)
产生一个 Int 集合,从 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]
【讨论】:
你总是让我加倍努力 ;) 不熟悉该代码,如何使用它将图像实际应用到图像视图? :-) 顺便说一句,你知道我在故事板中只有 6 个图像(猫头鹰)和 36 个图像视图吗? :-) @RappeStegarn 我已经更新了我的答案。是的,当然是愚蠢的错字。 :p【参考方案2】:你可以有一个图像名称数组,以及一个图像数组来保存它们。
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
【讨论】:
以上是关于随机图像到(许多)图像视图的主要内容,如果未能解决你的问题,请参考以下文章