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

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

【讨论】:

以上是关于随机图像到(许多)图像视图的主要内容,如果未能解决你的问题,请参考以下文章

如何随机化页面滚动视图中的图像

随机旋转 imageView

在Kotlin中选择不同的随机图像

使用 drupal boost 模块仍然可以随机加载图像

如何在 TableView Cell 中设置随机图像

随机化 Firebase 存储中的图像