web-dev-qa-db-fra.com

Affichage de l'animation pushviewcontroller comme presentModalViewController

Est-il possible d'afficher pushViewController l'animation ressemble à presentModalViewController mais qui a une fonctionnalité d'arrière-plan de pushViewController?

35
sathish kumar

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

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

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.

24
Dilip

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));
1
soan saini

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.

0
kevboh