繁体   English   中英

在iOS上将本地图像异步加载到数组中

[英]Load local images into an array asynchronously on iOS

我需要将捆绑包中的约200张图像加载到内存中的数组中,如下所示:

let arr = (0..<200).map({UIImage(named: "\\($0).png")})

唯一的问题是它需要永远做。.因此,我想在后台执行该操作,并在作业完成时获取回调。

我想我可以这样做:

var arr = [] DispatchQueue.main.async({ arr = (0..<200).map({UIImage(named: "\\($0).png")}) })

但是,我怎么知道该块何时完成? 谢谢!

编辑:我需要将它们加载到内存中,因为我想在UIImageView像这样对一系列图像进行动画处理:

let img: UIImageView()
img.animationImages = arr
img.duration = 1
img.startAnimating()

您可以创建一个回调并在将图像加载到后台线程之后调用它,因为图像将在那里同步加载。

我建议做这样的事情:

func loadImages(callback: @escaping ([UIImage]) -> Void) {
    DispatchQueue.global(qos: .background).async {
        let array = (0..<200).flatMap({ UIImage(named: "\($0).png") })
        callback(array)
    }
}

可以这样使用(使用快速尾随闭包语法):

loadImages { images in
    // do something with the images
}

您可能必须将callback(array) DispatchQueue.mainDispatchQueue.main

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM