翠鸟多个平行图像下载

时间:2016-12-03 18:34:27

标签: ios swift kingfisher

我有带图片网址的数组,我需要下载所有图片,在传递给视图之前将所有图片添加到数组中。

我正在使用该代码段下载单张图片

var images: [UIImage] = []
ImageDownloader.default.downloadImage(with: URL(string: "http://abcd.com/image1.jpg")!, options: [], progressBlock: nil) {
        (image, error, url, data) in
        images.append(image!)
      }

但这只是下载1张图片。如何在同一时间下载多个图像并在所有图像完成后运行回调?

1 个答案:

答案 0 :(得分:4)

对于每个URL,您可以调用downloadImage这将同时开始下载所有图像,当每个图像被提取时,您可以将其添加到图像阵列,您知道所有图像完成下载时的大小images数组与URL数组的大小相同,然后您可以调用callback

imageURLS.forEach({ 
    ImageDownloader.default.downloadImage(with: $0, options: [], progressBlock: nil) {
       (image, error, url, data) in
        images.append(image!)
        if images.count == imageURLS.count {
            callback()
        }
    }
})