图像阵列导致内存问题

时间:2017-07-11 04:00:52

标签: ios arrays swift uiimage tvos

目前正在创建一个基本的图像幻灯片应用程序,为此,我创建了一个UIImage数组并使用以下代码调用它们。

let imageNames = (0...50).map
    {
        "\($0).JPG"
    }
    let image = UIImage(named: imageNames[0])

    imageView.animationImages = image

    imageView.animationDuration = 50
    imageView.startAnimating()

想知道是否有人能提供一些建议。

2 个答案:

答案 0 :(得分:0)

您需要在数组中添加图像名称而不是UIImage。

let images: [String] = [
        "0.JPG",
         "1.JPG")!]

从数组字符串中获取图片

let image = UIImage(named: images[0])

答案 1 :(得分:0)

问题不在于图像在磁盘上占用多少内存,而在于解决屏幕上所有像素所需的内存。在使用之前,您并不需要存储图像。一张小于1MB的图像将很快加载。

相反,您只需要保留图像的路径,只有当您到达显示图像的代码时,才会加载它并显示它。

所以,结合亚历山大和KKRocks的答案:

在班级的顶部,定义文件名数组:

let imageNames = (0...55).map { "\($0).JPG" }

您要显示图片的位置:

if let image = UIImage(named: images[0]) {
   ... the code that is blowing up ...
}

如果您不确定如何保存文件并将其检索,请参阅我最近就该主题提供的答案:

Saving and Retrieving Files in User's Space.