Cómo crear UIImageView con la imagen de un enlace como este http://img.abc.com/noPhoto4530.gif?¿Cómo crear UIImageView con la imagen de un enlace?
Respuesta
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];
Descargue la imagen a una ruta local en su dispositivo y luego obtenga un UIImage del imageWithContentsOfFile
y utilícelo para configurar la imagen en el UIImageView
. Recuerde limpiar su archivo de imagen en algún momento.
Puede hacer lo que se describe here, o puede usar NSURLConnection para descargar los datos de imagen y crear el UIImage para configurarlo en UIImageView. Personalmente prefiero usar NSURLConnection para descargar la imagen de forma asincrónica.
Después de descargar la imagen que necesita también para colocarlo como una subvista desde un punto de 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];
Si desea descargar la imagen en el fondo, y luego otra vez en el hilo principal, puede hacerlo de esta manera:
- (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];
}
He aquí un fragmento de código para aquellos que deseen utilizar iOS nueva suite de 7 clases de NSURLSession:
// 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.com/images/srpr/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];
La respuesta aceptada es bastante vieja y mala práctica de todos modos. Esta es la respuesta correcta (con el manejo de errores adecuado, por supuesto;)). –
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];
puede probar el estilo moderno mcd (Xcode 8.0 o superior):
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 reemplazar la primera 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()
- 1. crear UIImageView con parte del archivo de imagen
- 2. ¿Cómo desplazo la imagen dentro de UIImageView?
- 3. Crear un UIImage desde un UIImageView girado
- 4. Cómo crear un elemento de enlace con la imagen como anclaje con jquery?
- 5. ¿Cómo crear un enlace que contiene una imagen y texto?
- 6. UIImageView no Muestra la imagen
- 7. Extracción de imagen de UIImageView
- 8. Girar imagen en UIImageView
- 9. ¿Cómo puedo cambiar la imagen mostrada en un UIImageView programáticamente?
- 10. ¿Cómo crear un enlace simbólico con SCons?
- 11. ¿Cómo crear un enlace cliqueable con GWT?
- 12. UIImageView con stretchableImageWithLeftCapWidth no se estira la imagen
- 13. Asp: imagen con enlace
- 14. Configurando la imagen de un UIImageView en Interface Builder
- 15. ¿Es posible establecer la posición de la imagen de UIImageView?
- 16. Crear un enlace permanente con JavaScript
- 17. ¿Cómo encadenar las animaciones de escala con un iPhone UIImageView?
- 18. Cómo crear un AST con un enlace CAPTURE?
- 19. UIImageView imagen de fondo y rotación Ayuda
- 20. cómo oscurecer un UIImageView
- 21. ¿Cómo rotar un UIImageView con CATransform3DRotate hace un efecto como la apertura de la puerta?
- 22. Cómo crear un enlace de descarga
- 23. Cómo crear un enlace a un directorio
- 24. UIImageView: ¿Cambiar el tamaño al tamaño de la imagen?
- 25. IOS: cambiar UIImageView con valor de etiqueta
- 26. ¿Cómo se puede "cascada" el patrón de imagen en UIImageView?
- 27. ¿Cómo detener el estiramiento de una imagen dentro de UIImageView?
- 28. Cómo crear un enlace MonoTouch desde .framework
- 29. ¿Cómo crear un enlace que desencadena la descarga de archivos?
- 30. iPad SDK, cómo manejar la orientación con UIImageView
Gracias por su ayuda :) –
¡Funciona perfecto! No puedo imaginar que "dataWithContentsOfURL" esté en su método estático. Estoy usando Xamarin por cierto. – Howard
¿Puedo agotar el tiempo de visualización de la imagen? cuando la conexión a Internet es lenta, la aplicación se puede bloquear, así que quiero agregar el tiempo de espera @nszombie –