Respuesta

46

Prueba esto:

UIViewController *yourViewController = [[UIViewController alloc]init]; 

[UIView beginAnimations: @"Showinfo"context: nil]; 
[UIView setAnimationCurve: UIViewAnimationCurveEaseInOut]; 
[UIView setAnimationDuration:0.75]; 
[self.navigationController pushViewController: yourViewController animated:NO]; 
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.navigationController.view cache:NO]; 
[UIView commitAnimations]; 
+0

¡Gracias! ¡Esto fue realmente muy útil! –

+1

buen ejemplo, esto nos ayudará a muchos de nosotros, a excepción de xCode :) –

+1

¿Alguna idea de cómo hacer esto con las transiciones de estilo iOS 8? – SleepsOnNewspapers

0

usted debe considerar hacer algo como:

ViewController *myVC = [[ViewController alloc] initWithFrame:OFF_SCREEN]; 
[navigationController pushViewController:myVC animated:NO]; 

donde OFF_SCREEN es un poco de CGRect debajo de la pantalla, al igual que (0, 481, 320, 480). Luego use un bloque de animación para ajustar el frame.origin de la viewcontroller view para que sea (0, 0). Probablemente quieras hacer el bloque animado en viewDidLoad o viewDidAppear.

+0

los controladores de vista no tienen un inicializador 'initWithFrame:' ​​ –

54

Si desea una animación de fundido, este enfoque funciona.

CATransition* transition = [CATransition animation]; 
transition.duration = 0.3; 
transition.type = kCATransitionFade; 
transition.subtype = kCATransitionFromTop; 

[self.navigationController.view.layer addAnimation:transition forKey:kCATransition]; 
[self.navigationController pushViewController:gridController animated:NO]; 
+1

¡Funciona como un campeón! Buena transición. ¡Gracias! –

+0

¡Oye, eso funcionó muy bien para mí, muchas gracias! –

+0

¡Funciona muy bien! ¡Muchas gracias! – Amit

21

Para la animación PushViewConttroler pantalla como presentamos a continuación código está trabajando,

Para empuje

ViewController *VC = [self.storyboard instantiateViewControllerWithIdentifier:@"ViewController"]; 
CATransition* transition = [CATransition animation]; 
transition.duration = 0.4f; 
transition.type = kCATransitionMoveIn; 
transition.subtype = kCATransitionFromTop; 
[self.navigationController.view.layer addAnimation:transition 
                forKey:kCATransition]; 
[self.navigationController pushViewController:VC animated:NO]; 

Y para POP

CATransition* transition = [CATransition animation]; 
transition.duration = 0.4f; 
transition.type = kCATransitionReveal; 
transition.subtype = kCATransitionFromBottom; 
[self.navigationController.view.layer addAnimation:transition 
              forKey:kCATransition]; 
[self.navigationController popViewControllerAnimated:NO]; 

Hay 1 número Tho ugh, que su fondo negro claro de la pantalla cuando va arriba/abajo,
trabajando en eso, tan pronto como lo haga, publique aquí un código nuevo.

+3

Además del push, también has añadido pop. ¡Buen punto! –

+0

Pero aún no hay curva de animación ... –

+0

@Julian, No entiendo tu punto. – Dilip

Cuestiones relacionadas