Pregunta

La descarga de una imagen de la red y mostrarlo en una UIImageView es bastante fácil. Sin embargo, esto requiere que la imagen se ha descargado por completo antes de que se le muestra al usuario, al derrotar por completo las imágenes JPEG progresivas (y PNG).

¿Cómo puedo hacer que las imágenes parcialmente descargados mientras se está realizando la transferencia? Me imagino que el SDK para tener alguna función de devolución de llamada que actualizar la imagen, pero no puedo encontrar una función de este tipo. ¿Es posible en absoluto con el actual iOS SDK?

¿Fue útil?

Solución

¿Se intenta representar la UIImage parte como didReceiveData se llama ...? Algo así como ...

-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    //TODO: add some error handling in case the image could not be created
    UIImage *img=[UIImage imageWithData:data];
    if (img) {
        self.imageView.image=img;
    }
}

Otros consejos

Sé que este post tiene alrededor de 1 año, pero por si acaso alguien está buscando para ello, hay un proyecto llamado NYXImagesKit que hace lo que busca.

Tiene una NYXProgressiveImageView llamada clase que es una subclase de UIImageView.

Todo lo que tiene que hacer es:

NYXProgressiveImageView * imgv = [[NYXProgressiveImageView alloc] init];
imgv.frame = CGRectMake(0, 0, 320, 480);
[imgv loadImageAtURL:[NSURL URLWithString:@"http://yourimage"]];
[self.view addSubview:imgv];
[imgv release];

Además, una buena opción es guardar sus imágenes como interlaced para que se cargue con baja calidad y mejoran con la descarga. Si la imagen no está entrelazado que se carga desde arriba a abajo.

Ahora hay una pequeña biblioteca de código abierto en la parte superior de libjpeg-turbo que permite la decodificación y visualización de archivos JPEG progresivos fácilmente:

let imageView = CCBufferedImageView(frame: ...)
if let url = NSURL(string: "http://example.com/yolo.jpg") {
    imageView.load(url)
}

https://github.com/contentful-labs/Concorde

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top