Déjame que te cuente sobre el problema que tengo y cómo traté de resolverlo. Tengo un UIScrollView que carga las subvistas a medida que se desplaza de izquierda a derecha. Cada subvista tiene 10-20 imágenes alrededor de 400x200 cada una. Cuando me desplazo de la vista a la vista, experimento bastante retraso.Establecer la propiedad de la imagen de UIImageView causa un retraso mayor
Después de investigar, descubrí que después de descargar todas las vistas e intentarlo de nuevo, el retraso se había ido. Pensé que el almacenamiento síncrono de las imágenes fue la causa del retraso. Así que creé una subclase de UIImageView que cargó las imágenes de forma asíncrona. El código de carga es similar al siguiente (self.dispatchQueue
devuelve una cola de despacho en serie).
- (void)loadImageNamed:(NSString *)name {
dispatch_async(self.dispatchQueue, ^{
UIImage *image = [UIImage imageNamed:name];
dispatch_sync(dispatch_get_main_queue(), ^{
self.image = image;
});
});
}
Sin embargo, después de cambiar todos mis UIImageViews a esta subclase, todavía experimenta lag (no estoy seguro si fue disminuida o no). Reduje la causa del problema a self.image = image;
. ¿Por qué esto causa tanta demora (pero solo en la primera carga)?
Por favor, ayúdame. = (
Vaya ... disculpa por ese pequeño error. – fumoboy007
Esto fue muy útil. Para las personas que llegan a esta pregunta y solo necesitan realizar un UIImage desde una UIView, encontré esta solución después de completar muchas respuestas: 'UIGraphicsBeginImageContext (processing.bounds.size); 'CGContextRef ctx = UIGraphicsGetCurrentContext(); '[processing.layer renderInContext: ctx]; 'UIImage * finalImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); ' –
¡Gracias! ... –