ios - 如何使用 URL Swift 3 下载图像?

标签 ios swift swift3

<分区>

我是一名开发新手,我正在尝试从 URL 下载并显示图像,并将其显示在 UIImage View 中。我尝试了多种方法,使用来自先前提出的问题和网络的信息,但它不断出现多个错误。

最佳答案

Leo Dabus's answer here 中有一个很好的例子说明如何做到这一点.我将在下面包含与您的问题相关的内容。

使用该帖子中的代码,我发现一种更简单、更简洁的方法是向 UIImageView 添加扩展:

extension UIImageView {
    func downloadedFrom(url: URL, contentMode mode: UIViewContentMode = .scaleAspectFit) {
        contentMode = mode
        URLSession.shared.dataTask(with: url) { (data, response, error) in
            guard let httpURLResponse = response as? HTTPURLResponse, httpURLResponse.statusCode == 200,
                let mimeType = response?.mimeType, mimeType.hasPrefix("image"),
                let data = data, error == nil,
                let image = UIImage(data: data)
                else { return }
            DispatchQueue.main.async() { () -> Void in
                self.image = image
            }
        }.resume()
    }
    func downloadedFrom(link: String, contentMode mode: UIViewContentMode = .scaleAspectFit) {
        guard let url = URL(string: link) else { return }
        downloadedFrom(url: url, contentMode: mode)
    }
}

然后您可以使用以下方法从 View Controller 中获取图像:

if let url = URL.init(string: urlString) {
    imageView.downloadedFrom(url: url)
}

关于ios - 如何使用 URL Swift 3 下载图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41132122/

相关文章:

ios - 如何使用以下完成处理程序调用函数?

ios - 如何创建和索引 Apple Watch 界面页面

ios - 格式化为 2 位小数 (NSDecimalNumber)

ios - 类型 'DispatchQueue.Attributes' 没有成员 'serial'

android - 有什么方法可以使用 googleapi 从 google+ 中的用户名获取用户 ID?

ios - 'PFUser' 没有名为 'subscript' 的成员

swift - Swift 协议(protocol)扩展中是否允许混合类/协议(protocol)类型约束?

UITableViewCell 不显示 detailTextLabel.text - Swift

arrays - 深度复制数组,其中元素是自定义类的可选

swift - 如何保存和显示带有核心数据的图像 - swift 3