【问题标题】:How would I download images from URL's with SDWebImage then append those images to a UIImage Array?如何使用 SDWebImage 从 URL 下载图像,然后将这些图像附加到 UIImage 数组?
【发布时间】:2017-06-01 18:43:43
【问题描述】:

我正在使用 UIImageView.image 来更改屏幕上的可见图像。

iv.image = images[index]

数组“images”当前填充了本地图像文件。但是,我希望从我的服务器下载图像,然后将它们附加到数组中。

private var images = [img1, img2, img3]

有人建议我使用 SDWebImage(特别是 SDWebImageManager 或 SDWebImageDownloader)来执行此操作,但是,在浏览下载和缓存教程时,它们都下载到了 UIImageView。我无法将 UIImageView 传入 .image 扩展名。我找不到任何教程或示例来帮助我实现这一目标。我对 swift 还很陌生,所以我没有大量的经验或理解。

【问题讨论】:

  • 我的代码中已经有一个类似的扩展,但是,当它只适用于 UIImageView 时,我需要将它应用到 UIImage 数组。除非我对正在发生的事情的理解是错误的,否则我不确定我将如何完成这项工作

标签: ios arrays swift uiimage sdwebimage


【解决方案1】:

您也可以在没有任何库的情况下下载图像异步。

以下将为 imageView 创建一个扩展,它将从服务器异步下载图像,只需将相应的 url 作为参数传递它就会返回一个图像。

extension UIImageView {
  public func imageFromServerURL(urlString: String) {
    URLSession.shared.dataTask(with: NSURL(string: urlString)! as URL, completionHandler: { (data, response, error) -> Void in
        if error != nil {
            print(error!)
            return
        }
        DispatchQueue.main.async(execute: { () -> Void in
            if let imageData = data {
                let image = UIImage(data: imageData)
                self.image = image
            }
        })            
    }).resume()
  }
}

// And you can call like this where ever required

cell.cellImageView.imageFromServerURL(urlString: banner.imageURL)

【讨论】:

  • 我需要返回多个图像并将它们放入一个数组中。对我来说,为 imageView 扩展并不好,因为我更改图像的方式是通过更改数组的索引并使用 imageView.image = UIImageArray[index]
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-24
相关资源
最近更新 更多