Quiero mostrar tantas imágenes en las celdas de la tabla. Conocía dos métodos para mostrar una imagen.¿cuál es la diferencia entre UIImageView y drawInRect?
Uno es la creación de una instancia de UIImageView y mostrarla
CGRect rect=CGRectMake(x,y,width,height);
UIImageView *image=[[UIImageView alloc]initWithFrame:rect];
[image setImage:[UIImage imageNamed:@"sample.jpg"]];
Otro método es,
CGRect rect=CGRectMake(x,y,width,height);
[[UIImage imageNamed:@"sample.jpg"] drawInRect:rect];
Ahora, mi pregunta es, ¿cuál es la diferencia entre estos dos? ¿Cuál es eficiente? ¿O alguna otra función está disponible mejor que esto?
Gracias de antemano ....
+1 por una GRAN respuesta. He estado tratando de entender la distinción entre esos dos desde hace un tiempo. Así que 'UIImageView' es siempre el camino a seguir, entonces? ¿Hay casos en los que sea preferible 'drawRect:''ing la imagen directamente? –
La única situación en la que puedo ver que es más lento es cuando se compone una escena de fondo estática de muchas imágenes pequeñas y luego se anima el contenido encima sin cambiar el fondo. En ese caso, la GPU tendrá que recomponer tanto el contenido móvil en la parte superior como la escena de fondo completa de cada cuadro. Este es un caso de esquina, por supuesto. – rpetrich
Una situación en la que '-drawRect:' es una ventaja es cuando quieres un rendimiento de desplazamiento suave y tienes PNG que tienen transparencia. En hardware antiguo, la GPU no puede manejar el desplazamiento de una gran cantidad de vistas transparentes al mismo tiempo sin soltar marcos. Una forma de evitar esto es hacer toda su composición en '-drawRect:', que convierte este pesado trabajo de GPU en un trabajo pesado de CPU una sola vez. Este es un escenario relativamente común en las celdas con gráficos de tablas intensas, aunque no es un gran problema con el iPhone 4 y el iPad debido a las GPU más rápidas. –