Computer >> 컴퓨터 >  >> 프로그램 작성 >> IOS

Swift를 사용하여 iOS 기기에서 URL로 이미지를 어떻게 로드합니까?

<시간/>

swift를 사용하여 iOS에서 이미지를 로드하기 위해 간단한 데이터 작업 세션을 사용할 것입니다. 이미지는 크기에 관계없이 배경에서 로드해야 하며 기본 보기의 작업을 중지하지 않기를 원합니다.

예제의 도움으로 이것을 봅시다. 빈 프로젝트를 만들고 빈 이미지 보기를 추가하세요.

콘센트를 만든 다음 URL에서 이미지를 가져오는 코드를 작성합니다. 이것이 현재 우리 애플리케이션의 모습입니다.

Swift를 사용하여 iOS 기기에서 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!)
}

기기에서 이 코드를 실행하면 다음과 같은 결과가 나타납니다.

Swift를 사용하여 iOS 기기에서 URL로 이미지를 어떻게 로드합니까?