¿Cómo crear UIImageView con la image de un enlace?

¿Cómo crear UIImageView con imágenes desde un enlace como este http://img.abc.com/noPhoto4530.gif ?

NSURL *url = [NSURL URLWithString:@"http://img.abc.com/noPhoto4530.gif"]; NSData *data = [NSData dataWithContentsOfURL:url]; UIImage *image = [UIImage imageWithData:data]; UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; 

Aquí hay un fragment de código para aquellos que buscan utilizar el nuevo set de classs de NSURLSession de iOS 7:

 // Set NSURLSessionConfig to be a default session NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration]; // Create session using config NSURLSession *session = [NSURLSession sessionWithConfiguration:config]; // Create URL NSURL *url = [NSURL URLWithString:@"https://www.google.comhttp://iosberry.comsrpr/logo11w.png"]; // Create URL request NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; request.HTTPMethod = @"GET"; // Create data task NSURLSessionDataTask *getDataTask = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { // Okay, now we have the image data (on a background thread) UIImage *image = [UIImage imageWithData:data]; // We want to update our UI so we switch to the main thread dispatch_async(dispatch_get_main_queue(), ^{ // Create image view using fetched image (or update an existing one) UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; // Do whatever other UI updates are needed here on the main thread... }); }]; // Execute request [getDataTask resume]; 

Si desea download la image en segundo plano y luego establecerla en el hilo principal, puede hacerlo así:

 - (void)downloadPicture { dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ NSURL *url = [NSURL URLWithString:@"http://img.abc.com/noPhoto4530.gif"]; UIImage *image = [self getPicture:url]; dispatch_async(dispatch_get_main_queue(), ^{ [self setPicture:image]; }); }); } - (UIImage *)getPicture:(NSURL *)pictureURL { NSData *data = [NSData dataWithContentsOfURL:pictureURL]; UIImage *image = [UIImage imageWithData:data]; return image; } - (void)setPicture:(UIImage *)image { UIImageView * imageView = [[UIImageView alloc] initWithFrame: CGRectMake(kPictureX, kPictureY, image.size.height, image.size.width)]; [imageView setImage:image]; [self.view addSubview: imageView]; } 

Después de download la image, también debe colocarlo como una subvista de una vista, así:

 NSURL *url = [NSURL URLWithString:@"http://img.abc.com/noPhoto4530.gif"]; NSData *data = [NSData dataWithContentsOfURL:url]; UIImage *image = [UIImage imageWithData:data]; UIImageView * myImageView = [[UIImageView alloc] initWithImage:image]; [someOtherView addSubview:myImageView]; [myImageView release]; 

Descargue la image en una ruta local en su dispositivo, luego obtenga un UIImage de imageWithContentsOfFile y use esto para configurar la image en UIImageView . Recuerde limpiar su file de image en algún momento.

Puede hacer lo que se describe aquí , o puede usar NSURLConnection para download los datos de la image y crear UIImage para establecer UIImageView. Personalmente, prefiero usar NSURLConnection para download la image de forma asíncrona.

La misma respuesta puede tener aquí

 NSURL *urlLink = [NSURL URLWithString:@"http://img.abc.com/noPhoto4530.gif"]; NSData *dataURL = [NSData dataWithContentsOfURL:urlLink]; UIImage *imageData = [UIImage imageWithData:dataURL]; UIImageView *imageView = [[UIImageView alloc] initWithImage:imageData]; 

puedes probar el estilo moderno de gcd (xcode 8.0+):

 let queue = DispatchQueue(label: "com.mydomain.queue3") queue.async { let imageURL: URL = URL(string: "https://www.brightedge.com/blog/wp-content/uploads/2014/08/Google-Secure-Search_SEL.jpg")! guard let imageData = try? Data(contentsOf: imageURL) else { return } DispatchQueue.main.async { self.imageView.image = UIImage(data: imageData) } } 

también puede replace el primer DispatchQueue con URLSession.dataTask

 let imageURL: URL = URL(string: "https://www.brightedge.com/blog/wp-content/uploads/2014/08/Google-Secure-Search_SEL.jpg")! (URLSession(configuration: URLSessionConfiguration.default)).dataTask(with: imageURL, completionHandler: { (imageData, response, error) in if let data = imageData { print("Did download image data") DispatchQueue.main.async { self.imageView.image = UIImage(data: data) } } }).resume()