NOTA: Agregué mi nueva solución en la respuesta de ACTUALIZACIÓN a continuación.Fade in/out El contenido de UIScrollView como Mobile Safari lo hace en su pestaña
Intento recrear los efectos que vimos en la pestaña de Mobile Safari en iPhone/iPod touch.
Básicamente, es un UIScrollView que contiene 4 UIView reutilizables (actuando como un buffer de anillo), y se desplaza horizontalmente. Al desplazarse, la opacidad de UIView se desvanecerá/desaparece sin problemas con el desplazamiento.
Actualmente, hago todo el trabajo sucio en - (void)scrollViewDidScroll:(UIScrollView *)scrollView
. Como obtener contentOffset de UIScrollView, determinar la creación de páginas, calcular el delta entre contentOffset y cada posición de UIView, y decidir/establecer el valor alfa de cada UIView en el momento en que se llamó al scrollViewDidScroll:
.
Y funciona, el rendimiento está bien, todo funciona sin problemas, pero el único problema es calcular demasiado.
Me trataron de beginAnimations:
y commitAnimations:
, pero es inútil en scrollViewDidScroll:
, ya que 1) el nuevo valor alfa todavía tiene que ser calcular por mí mismo, y 2) scrollViewDidScroll UIView: mantiene llama al desplazarse, no tiene sentido hacer la animación aquí. ¿Hay alguna forma de reescribir esta parte con Core Animation? Así que no tengo que hacer los cálculos yo mismo sobre el valor alfa de cada UIView, en cambio, puedo dejar trabajos completos para Core Animation.
Solo estoy encontrando esto ahora, y es genial, ¡gracias por compartir! Una falla: la alfa inicial no está configurada para la vista fuera de la pantalla. Supongo que podría llamar a updateAlpha: explícitamente, pero tal vez sea suficiente para establecer explícitamente contentOffset al inicio. ¿Pensamientos? –