如何在 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 次瀏覽

啟動您的 職業生涯

透過完成課程獲得認證

開始學習
廣告