Aplicación Ultravisual para iPhone como UIView o Desplazamiento UITableView

¿Alguien puede darme una pista sobre cómo recrear el efecto de desplazamiento utilizado en la aplicación UltraVisual para iPhone? Aquí hay un gif para ilustrar el efecto:

introduzca la descripción de la imagen aquí

La primera "cell" es de altura completa mientras que las otras celdas mostradas tienen un tamaño regular. Mientras el usuario se desplaza hacia arriba, la primera celda anima lentamente a la altura regular, mientras que la siguiente lentamente se hace más grande. ¿Utilizan una UITableView? ¿O un UIScrollView? No tengo idea de cómo está hecho …

¡Ha hecho mi día! De hecho, escribí esa vista 🙂

Esto es realmente muy sencillo. Esta vista usa UICollectionView con un UICollectionViewLayout personalizado.

El principio general es esto. Compongo un "intervalo de arrastre": esa es la distancia requerida para arrastrar entre cada celda. Este valor es arbitrario, pero afecta la cantidad de time que el usuario debe arrastrar para cambiar de celda. La altura total de la vista de colección es el "intervalo de arrastre" * el número de elementos en la vista. Luego, establezco el layout para paginar automáticamente al intervalo de arrastre más cercano (que le da el comportamiento de ajuste). Esto es muy similar a cómo cubre el flujo de cobertura. A partir de esto, puede calcular el índice de la 'celda superior' dividiendo el contenido de la queue y la altura.

Con el índice 'top cell' puede generar los frameworks para cada celda con bastante facilidad. El marco de la celda superior es {0, contentOffset.y, 320, 176}, y desde allí puede calcular el siguiente fotogtwig de celdas y así sucesivamente.

Entonces, el último truco consiste en calcular la interpolación del índice de la página. Esta es básicamente la parte decimal del índice de celda actual. Esto dará un número entre 0 y 1 que se puede usar para calcular la interpolación entre el marco superior y el marco inferior.

Cada 'prepareLayout' calcula los cuadros de las celdas en la pantalla, y luego en layoutAttributesForElementsInRect :, genera todos los attributes de layout basados ​​en los cuadros generados.

Utilizando este truco, puede crear todo tipo de layouts complicados. UICollectionView puede ser una bestia poderosa, pero definitivamente lleva un poco de time rodearlo.

¡Es muy genial! Hicimos un control bastante simple de usar como este que se puede encontrar aquí:

https://github.com/RobotsAndPencils/RPSlidingMenu