Tengo un UINavigationController. Hice VC1 el controlador raíz y cargué programáticamente VC2 desde VC1 y luego la animación personalizada pasó de VC1 a VC2. Estándar. Todo está bien y bien.Personalizar animación UINavigationController: CATransición
Ahora, me gustaría tener una animación personalizada entre los dos, así:
En suma, se desliza fuera de la vista VC1 VC2 mientras está debajo de ella. Al igual que una pila de papel donde se desliza la primera hoja (VC1) y, por tanto, revela la hoja debajo (VC2).
Así que lo que probé es el siguiente código que se llama desde VC1 para llegar a VC2. Sin embargo, hay problemas con él:
MyVC2 *vctwo = [[[MyVC2 alloc] init] autorelease];
CATransition *transition = [CATransition animation];
transition.duration = 1;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionReveal;
transition.subtype = kCATransitionFromRight;
transition.delegate = self;
[self.navigationController.view.layer addAnimation:transition forKey:nil];
[[self navigationController] pushViewController:vctwo animated:YES];
Los problemas son los siguientes:
- VC2 no se fija en el fondo. Se desliza también (aunque he especificado kCATransitionReveal). Quiero ser VC2 totalmente reparado en segundo plano.
- VC1 se desvanece. Realmente no sé por qué. No usé kCATransitionFade o similar, así que no puedo ver de dónde viene el fundido.
Cualquier sugerencia de por qué no estoy obteniendo los resultados esperados sería muy apreciada. Lo siento si esto es obvio, pero estoy intentando esto por horas y realmente me sentí frustrado.
Gracias Ole, lo cambié y VC2 ya no se mueve más. Debería haberlo pensado. ¿Alguna idea sobre el fundido, sin embargo? Todavía no puedo ver de dónde viene la animación de fundido de salida. –
Creo que el fundido es en realidad parte de la animación de UINavigationController y parece que no puedo deshacerme de él. ¿Conoces alguna forma de desactivar la animación de desvanecimiento personalizada implementada por UINavigationController? –