Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> iOS

วิธีโหลดรูปภาพจาก URL ใน iOS ด้วย Swift

การโหลดรูปภาพจาก URL ใน iOS ใช้ URLSession data task ควรโหลดใน Background thread เพื่อไม่บล็อก Main thread

ตัวอย่าง

  1. สร้างโปรเจกต์ว่าง เพิ่ม Image View และสร้าง Outlet
  2. เขียนโค้ดดึงรูปจาก URL

สถานะเริ่มต้น:

วิธีโหลดรูปภาพจาก URL ใน iOS ด้วย Swift

โค้ดโหลดรูปภาพ

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)
}
}
}

ปรับปรุงด้วย Extension

สร้าง Extension ของ UIImageView เพื่อใช้งานสะดวก:

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!)
}

ผลลัพธ์:

วิธีโหลดรูปภาพจาก URL ใน iOS ด้วย Swift