Pinterest Implementación Gridview en iOS

Quiero implementar una vista de cuadrícula como la de Pinterest

Pensé en implementar como 3 vistas de tabla. Pero no pude desplazarlos bien juntos. Cuando implementé el scrollViewDidScroll y configuré el contentOffset para las vistas de la tabla y el scrollView, el desplazamiento se hizo lento e inutilizable.

Otra implementación que hice fue de tener un set de imágenes para cargar y llamar a la function scrollViewDidScroll en scrollViewDidScroll . La function ViewDraw solo dibuja las imágenes necesarias y elimina el rest de las imágenes de la memory que ya estaban dibujadas pero que no son visibles. Esto también hace que el desplazamiento de ScrollView sea lento. Y otro problema es que hay parches blancos (color de background) antes de dibujar las imágenes.

¿Cuál debería ser la mejor manera de implementar esta vista de cuadrícula?

Comtesting este proyecto de código abierto: TMQuiltView , parece que hace exactamente lo que quieres.

Si está utilizando iOS 6, puede usar mi layout inspirado en Pinterest para UICollectionView. Vea el código en JSPintDemo .

introduzca la descripción de la imagen aquí

Solución 1 (no sé si esto funciona y no me gusta mucho)

¿Qué hay de tener 3 vistas verticales de la tabla una al lado de la otra, pero reenviar cualquier evento táctil desde cualquier vista de tabla a las otras. Entiendo que tuvo problemas de performance al tratar de sincronizar las vistas de la table, pero tal vez trabajar en un nivel de evento las cosas funcionarían mejor. Tal vez.

Solución 2

Use un UIScrollView (para los propósitos de desplazamiento, por supuesto). Por razones de performance y memory, también necesita implementar un mecanismo de carga bajo demanda para que no cargue todas sus imágenes a la vez.

Para hacer esto, creo una class, CustomImageStrip que maneja una list de imágenes verticales. Esta class funciona junto con scrollview y usa contentOffset para decidir cuándo es el momento de cargar / download una image de la tira.

Al tener 3 classs de bandas de image independientes, las imágenes pueden ser de cualquier tamaño y no necesitan alinearse. Pero, dado que todos pertenecen al mismo UIScrollView, el desplazamiento se realizará simultáneamente.