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!) }
기기에서 이 코드를 실행하면 다음과 같은 결과가 나타납니다.