Pregunta

¿Es posible mostrar la animación mirada pushViewController como presentModalViewController pero que tiene una funcionalidad de fondo pushViewController?

¿Fue útil?

Solución

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];

Otros consejos

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];

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

Pulsar

 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 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 tema, sin embargo, que su pantalla de fondo negro luz cuando su ir hacia arriba / abajo,
Trabajando en eso, tan pronto como su posterior hecho nuevo código aquí.

Para todos Tratando de Xamarin (C #) Código equivalente De respuesta por @hardik Thakkar anterior, tiene el problema de Negro backgound durante la animación, descansar todo bien.

Para POP

    CATransition transition = CATransition.CreateAnimation();
    transition.Duration = 0.4;
    transition.Type = CAAnimation.TransitionReveal;
    transition.Subtype = CAAnimation.TransitionFromTop;
    this.NavigationController.View.Layer.AddAnimation(transition, nameof(CATransition));

Para empuje

    CATransition transition = CATransition.CreateAnimation();
    transition.Duration = 0.4;
    transition.Type = CAAnimation.TransitionReveal;
    transition.Subtype = CAAnimation.TransitionFromBottom;
    this.NavigationController.View.Layer.AddAnimation(transition, nameof(CATransition));

Se debe pensar en 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, como (0, 481, 320, 480). A continuación, utilice un bloque de animación para ajustar frame.origin de vista de la ViewController ser (0, 0). Es probable que desee hacer el bloque animado en viewDidLoad o viewDidAppear.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top