Est-il possible d'afficher pushViewController
l'animation ressemble à presentModalViewController
mais qui a une fonctionnalité d'arrière-plan de pushViewController
?
Essaye ça :
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];
Si vous souhaitez une animation de fondu, cette approche fonctionne.
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];
Pour afficher l'animation PushViewConttroler comme Présent sous le code fonctionne,
Pour Push
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];
Et pour 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];
Il y a un problème cependant, que son écran affiche un fond noir clair lors de sa montée/descente,
Travailler là-dessus, dès que son fait poster un nouveau code ici.
Pour tous ceux qui essaient dans Xamarin (C #) un code équivalent de la réponse de @hardik Thakkar ci-dessus, le problème du fond noir pendant l'animation, reste bien.
Pour 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));
Pour Push
CATransition transition = CATransition.CreateAnimation();
transition.Duration = 0.4;
transition.Type = CAAnimation.TransitionReveal;
transition.Subtype = CAAnimation.TransitionFromBottom;
this.NavigationController.View.Layer.AddAnimation(transition, nameof(CATransition));
Vous devriez envisager de faire quelque chose comme:
ViewController *myVC = [[ViewController alloc] initWithFrame:OFF_SCREEN];
[navigationController pushViewController:myVC animated:NO];
où OFF_SCREEN est un CGRect sous l'écran, comme (0, 481, 320, 480). Utilisez ensuite un bloc d'animation pour ajuster le cadre de la vue du contrôleur de vue. L'origine doit être (0, 0). Vous voudrez probablement faire le bloc d'animation dans viewDidLoad ou viewDidAppear.