Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> IOS

ฉันจะโหลดรูปภาพด้วย URL บนอุปกรณ์ iOS โดยใช้ Swift ได้อย่างไร


ในการโหลดรูปภาพใน iOS โดยใช้ swift เราจะใช้เซสชันงานข้อมูลอย่างง่าย ต้องโหลดรูปภาพในพื้นหลังเนื่องจากอาจมีขนาดใดก็ได้ และเราไม่ต้องการให้หยุดการทำงานของมุมมองหลักของเรา

ลองดูสิ่งนี้ด้วยความช่วยเหลือจากตัวอย่าง สร้างโครงการเปล่าและเพิ่มมุมมองภาพที่ว่างเปล่า

สร้างทางออก จากนั้นเราจะเขียนโค้ดเพื่อรับรูปภาพจาก URL นี่คือหน้าตาของแอปพลิเคชันของเราในขณะนี้

ฉันจะโหลดรูปภาพด้วย URL บนอุปกรณ์ iOS โดยใช้ Swift ได้อย่างไร

ตอนนี้ มาเพิ่มโค้ดเพื่อรับรูปภาพจาก 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!)
}

เมื่อเราเรียกใช้รหัสนี้บนอุปกรณ์ของเรา เราจะได้รับผลลัพธ์ดังต่อไปนี้

ฉันจะโหลดรูปภาพด้วย URL บนอุปกรณ์ iOS โดยใช้ Swift ได้อย่างไร