【问题标题】:How to get a random image from a folder in swift?如何快速从文件夹中获取随机图像?
【发布时间】:2016-08-06 21:33:15
【问题描述】:

到目前为止,我已经创建了一个图像文件夹,并且可以将其中 1 个图像分配给 UIImageView

但是我现在要做的是创建一个随机生成器,它将从文件夹中选择一个随机图像,所以如果我要创建一个按钮,我可以在单个 @987654324 上分别随机显示所有图像@。

但是,这个文件夹将包含 100 多个图像,所以我不想将每个图像硬编码到一个数组中。此外,图像的名称对于图像本身必须是唯一的。

我一直在网上搜索,但找不到有关如何编写适合我需要的代码的信息。那么如何快速从文件夹中获取并显示随机图像?

【问题讨论】:

标签: ios swift uiimageview


【解决方案1】:

你可以这样命名你的图片

image_0
image_1
image_2

然后使用此代码填充您的UIImageView

let numberOfImages: UInt32 = 100
let random = arc4random_uniform(numberOfImages)
let imageName = "image_\(random)"
imageView.image = UIImage(named: imageName)

更新

由于您不想重命名图像,您可以创建一个 plist 文件(类型为 Array),在其中放置图像的所有名称

最后

func loadRandomImage() {
    let path = NSBundle.mainBundle().pathForResource("Images", ofType: "plist")!
    let names = NSArray(contentsOfFile: path) as! [String]
    let random = Int(arc4random_uniform(UInt32(names.count)))
    let imageName = names[random]
    imageView.image = UIImage(named: imageName)
}

【讨论】:

  • 名称无关紧要,只需获取您的文件夹内容,使用它的计数来限制生成的随机索引。 stackoverflow.com/questions/27259332/…
  • @AndrewMontague:你在使用Assets.xcassets吗?出于多种原因,您应该将图片放在此处
  • @AndrewMontague:使用 Assets.xcassets 很重要,尤其是在您制作游戏时。
  • @AndrewMontague:我在答案中添加了一个新部分,请查看。或尝试 @Leo Dabus 建议的解决方案。
  • 谢谢,这个方法完全符合我的要求,非常感谢你的帮助!
【解决方案2】:

您需要创建一个字符串文件名数组并从数组中选择一个随机文件名,或者您需要使用文件管理器 (NSFileManager) 获取文件夹中的文件列表,然后从中选择大批。下界非常难。

【讨论】:

    猜你喜欢
    • 2021-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多