Mostrando mirada animación pushviewcontroller como presentModalViewController
-
27-09-2019 - |
Pregunta
¿Es posible mostrar la animación mirada pushViewController
como presentModalViewController
pero que tiene una funcionalidad de fondo pushViewController
?
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.