2009-06-24 13 views

Respuesta

6

que necesita:

  1. Un ScrollView con paginación está habilitada, tres pantallas de ancho.
  2. Tener tres subvistas en su vista de desplazamiento - L (contenido izquierdo, en 0,0), C (contenido central, en 320,0), R (contenido correcto, en 640,0). C es el contenido que desea mostrar inicialmente. L es el contenido para mostrar si el usuario se desplaza hacia la izquierda.
  3. Establezca el contentoffset de la vista de desplazamiento en 320 (para modo retrato), porque desea que C se muestre inicialmente, no L.
  4. Cada vez que finaliza un desplazamiento, contentoffset será un número entero de pantallas. Si todavía muestra C (contentoffset es 320), entonces está bien. Si el contentoffset ahora es 0 o 640, tiene un poco de trabajo por hacer.

Si el usuario se desplaza a la izquierda - que tiene la misma jerarquía de la vista, pero ahora el ScrollView está mostrando L en lugar de C, debido a que el contentoffset es 0, con un scrolloffset de 0. Ahora debe reiniciar todo el contenido de modo tiene XLC y un offsetoffset de 320 - en caso de que el usuario quiera desplazarse hacia la izquierda nuevamente. En otras palabras, C se convierte en la nueva R, L se convierte en la nueva C y X es el nuevo contenido que se mostrará si el usuario se desplaza nuevamente a la izquierda.

El método para anular de hacer esto es:

(void)scrollViewDidEndDecelerating:(UIScrollView*)scrollView 
+0

Gracias por la respuesta rápida! :) –

0

Me gustaría hacer esto utilizando una CATransition, con el tipo de kCATransitionPush.

CATransition *animation = [CATransition animation]; 
[animation setType:kCATransitionPush]; 
[animation setSubtype:kCATransitionFromRight]; //or ...FromLeft, as the case may be 

He obtenido un mejor rendimiento con CATransitions que con otras técnicas hasta ahora, pero eso podría depender de varios factores.

Eche un vistazo a la clase TransitionView en el código de ejemplo de Apple para ver un ejemplo de cómo crear una vista que realice transiciones. Con esa clase puede hacer:

- (void)replaceSubview:(UIView *)oldView withSubview:(UIView *)newView transition:(NSString *)transition direction:(NSString *)direction duration:(NSTimeInterval)duration; 
+0

¡Gracias también! Voy a probar y ver lo que me gusta. –

Cuestiones relacionadas