Tengo una vista uitable que carga imágenes bastante grandes en cada celda y las alturas de las celdas varían según el tamaño de la imagen. El rendimiento del desplazamiento es decente, pero a veces puede ser desigual.
Encontré estos consejos que encontré en el blog de FieryRobot:
desplazamiento-vidrioso-con-uitableview
desplazamiento-más-vidrioso-con-uitableview
¿Alguien tiene algún consejo para mejorar el rendimiento de desplazamiento de uitableview?
Respuestas:
UITableViewCell
's,drawRect:
si es posible, evite las subvistas a toda costa (o si necesita la funcionalidad de accesibilidad estándar, las vistas de contenidodrawRect:
)UITableViewCell
capa sea opaca (lo mismo ocurre con la vista de contenido si tiene una)UITableView
ejemplos / documentaciónUIImage
sfuente
UITableViewCell
, no use un Nib, escríbalo en código. Es mucho más rápido que cargar archivos Nib.fuente
El desarrollador detrás de Tweetie ha escrito mucho sobre esto y tiene un código que demuestra cómo se hizo para esa aplicación. Básicamente, él / ella aboga por una vista personalizada por celda de tabla y dibujarla manualmente (en lugar de realizar una subvista con Interface Builder, entre otras opciones).
desplazamiento-rápido-en-tweetie-con-uitableview
Además, Apple ha actualizado su propio código de muestra para TableView en sus tutoriales de TableViewSuite (¿tal vez en respuesta a esto?)
TableViewSuite
fuente
El asesino de rendimiento # 1 para el desplazamiento de UITableView es dibujar sombras en cualquier capa de vista de celda, por lo que si el rendimiento del desplazamiento es importante, no haga sombras a menos que básicamente no ralentice su hilo principal.
Pensé que esto tenía que decirse, ya que ninguna de las respuestas aceptadas mencionaba sombras y capas. : +)
fuente
Cualquier problema con el
UITableView
rendimiento del desplazamiento se puede resolver utilizando técnicas ya descritas en otras respuestas. Sin embargo, muchas veces el rendimiento lento es causado por algo intrínsecamente erróneo o repetitivo.El hecho de que
UITableView
reutilice las celdas y el hecho de que cada celda pueda necesitar su propia imagen, juntos hace que la solución sea un poco compleja. De cómo se está resolviendo de manera general, aquí resumo las cosas que deben ser atendidas:[tableView reloaddata]
cellForRowAtIndexPath
, incluya el código que establecerá los datos (texto) del objeto de modelo de datos correcto de la matriz.Para evitar problemas, consulte este tutorial sobre la carga diferida de imágenes dentro de la vista de tabla.
fuente