Cargar una imagen desde una URL Swift 3

captura-de-pantalla-2016-11-29-a-las-18-25-56

Primero Si la imagen la vamos a cargar desde una url que no sea segura debemos modificar nuestro Info.plist para que nos deje cargar la imagen entonces en nuestro archivo Info.plist agregamos esto:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

Ahora crea la siguiente funcion en algun controller o bien en una clase de utilidad que tengas, o bien se puede hacer como una extension de la Clase UIImageView, como se te antoje igual pondre los tres ejemplos que son casi iguales:

func downloadImage(_ uri : String, inView: UIImageView){
        
        let url = URL(string: uri)
               
        let task = URLSession.shared.dataTask(with: url!) {responseData,response,error in
            if error == nil{
                if let data = responseData {
                    
                    DispatchQueue.main.async {
                        inView.image = UIImage(data: data)
                    }
                    
                }else {
                    print("no data")
                }
            }else{
                print(error)
            }
        }
        
        task.resume()
        
    }

Con esta funcion lo metemos dentro de un Controller y bueno nuestro controller quedaria asi:

class ViewController: UIViewController {
    @IBOutlet weak var imageView: UIImageView!
     
    override func viewDidLoad() {
        super.viewDidLoad()
 
        self.downloadImage("https://dummyimage.com/300x300/0F0F0F/00FF00.png&text=Loaded+Image!", inView: imageView)
    }

func downloadImage(_ uri : String, inView: UIImageView){
        
        let url = URL(string: uri)
               
        let task = URLSession.shared.dataTask(with: url!) {responseData,response,error in
            if error == nil{
                if let data = responseData {
                    
                    DispatchQueue.main.async {
                        inView.image = UIImage(data: data)
                    }
                    
                }else {
                    print("no data")
                }
            }else{
                print(error)
            }
        }
        
        task.resume()
        
    }
}

Nos quedaria asi entonces en el emulador:
captura-de-pantalla-2016-11-29-a-las-18-25-56

Aqui les dejo el link con el codigo:

 

Load image from url swift 3

Artículos Relacionados