如何在 iOS 设备上使用 Swift 加载 URL 中的图片?


要使用 Swift 在 iOS 中加载图片,我们将使用简单的 Data Task 会话。图片需要在后台加载,因为它可能很大,我们不希望它阻止主视图的操作。

让我们通过一个例子来了解这一点。创建一个空项目并添加一个空的 Image View。

创建其出口,然后我们将编写代码从 URL 获取图片。这就是我们应用程序目前的样子。

现在,让我们添加代码从 URL 获取图片。

func getData(from url: URL, completion: @escaping (Data?, URLResponse?, Error?) -> ()) {
   URLSession.shared.dataTask(with: url, completionHandler: completion).resume()
}
func downloadImage(from url: URL) {
   getData(from: url) {
      data, response, error in
      guard let data = data, error == nil else {
         return
      }
      DispatchQueue.main.async() {
         self.image = UIImage(data: data)
     }
   }
}

当我们运行此代码时,它将从 URL 下载图片,我们可以创建一个图片对象并使用新对象初始化我们的 imgView。

但是,让我们为此方法创建一个扩展并使用它。

extension UIImageView {
   func getData(from url: URL, completion: @escaping (Data?, URLResponse?, Error?) -> ()) {
      URLSession.shared.dataTask(with: url, completionHandler: completion).resume()
   }
   func downloadImage(from url: URL) {
      getData(from: url) {
         data, response, error in
         guard let data = data, error == nil else {
            return
         }
         DispatchQueue.main.async() {
            self.image = UIImage(data: data)
         }
      }
   }
}

现在,在我们的 viewDidLoad(或您喜欢的任何其他位置)中添加以下代码。

override func viewDidLoad() {
   super.viewDidLoad()
   let url = URL(string: "https://static.independent.co.uk/s3fs-public/thumbnails/image/2017/09/12/11/naturo-monkey-selfie.jpg?w968h681")
   self.imgView.downloadImage(from: url!)
}

当我们在设备上运行此代码时,我们将得到以下结果。

更新于: 2019-07-30

670 次浏览

启动您的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.