2016-12-13 4 views
-1

Im a newbie dev и я пытаюсь загрузить и отобразить изображение с URL-адреса и отобразить его в представлении UIImage. Я пробовал несколько методов, используя информацию из ранее заданных вопросов и т. Д., Но он продолжает придумывать несколько ошибок.Как скачать изображение с URL Swift 3?

+3

Выберите один из этих нескольких методов, которые вы внедрили и опубликовали для него код и какие ошибки вы получаете. – Gruntcakes

ответ

11

Существует отличный пример того, как это сделать в Leo Dabus's answer here. Я включу соответствующие биты в ваш вопрос ниже.

Использование кода с этого поста, я нашел один из самых простых и чистых способов является добавить расширение к UIImageView:

extension UIImageView { 
    func downloadedFrom(url: URL, contentMode mode: UIViewContentMode = .scaleAspectFit) { 
     contentMode = mode 
     URLSession.shared.dataTask(with: url) { (data, response, error) in 
      guard let httpURLResponse = response as? HTTPURLResponse, httpURLResponse.statusCode == 200, 
       let mimeType = response?.mimeType, mimeType.hasPrefix("image"), 
       let data = data, error == nil, 
       let image = UIImage(data: data) 
       else { return } 
      DispatchQueue.main.async() {() -> Void in 
       self.image = image 
      } 
     }.resume() 
    } 
    func downloadedFrom(link: String, contentMode mode: UIViewContentMode = .scaleAspectFit) { 
     guard let url = URL(string: link) else { return } 
     downloadedFrom(url: url, contentMode: mode) 
    } 
} 

Тогда вы можете просто захватить изображение с вашего контроллера представления с помощью:

if let url = URL.init(string: urlString) { 
    imageView.downloadedFrom(url: url) 
} 
+3

https://stackoverflow.blog/2009/06/attribution-required/ –

+1

@LeoDabus исправлен и благодарит за отличную работу над вашими ответами на этом сайте. Они очень помогли мне, когда я начал изучать Свифта. –

+0

let url = URL (string: headerViewImageUrl) let data = try? Данные (contentOf: url!) let img: UIImage = UIImage (данные: данные!)! imageview.imgage = img – cmp

Смежные вопросы