69 votes

Comment puis-je changer le style de l'animation d'un modal UIViewController?

Je suis actuellement à l'affichage d'un UIViewController comme ceci:

[[self navigationController] presentModalViewController:modalViewController animated:YES];

et de les cacher comme ceci:

[self.navigationController dismissModalViewControllerAnimated:YES];

L'animation est "faites glisser vers le haut à partir du bas"... puis faites glisser vers le bas. Comment puis-je changer le style de l'animation? Pouvez je l'ai fait fade in/out?

Cheers!

194voto

Simo Salminen Points 1836

Pour l'iPhone 3.0+, une base de fondu enchaîné est plus facile de faire comme ceci:

modalViewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[[self navigationController] presentModalViewController:modalViewController
                                               animated:YES];

60voto

Ben Gottlieb Points 59900

Marcus Zarra posté une excellente solution à ce sur le SDK liste de diffusion:

UIViewController *controller = [[[MyViewController alloc] init] autorelease];
UIViewAnimationTransition trans = UIViewAnimationTransitionCurlUp;
[UIView beginAnimations: nil context: nil];
[UIView setAnimationTransition: trans forView: [self window] cache: YES];
[navController presentModalViewController: controller animated: NO];
[UIView commitAnimations];

Il y a des transitions pour le retournement et le page-de curling. Si vous êtes fixé sur la décoloration, vous pouvez essayer le réglage de votre nouveau point de vue de l'alpha:

UIViewController *controller = [[[MyViewController alloc] init] autorelease];
controller.view.alpha = 0.0;
[navController presentModalViewController: controller animated: NO];
[UIView beginAnimations: nil context: nil];
controller.view.alpha = 1.0;
[UIView commitAnimations];

Cependant, ce que vous voulez probablement, c'est un fondu enchaîné, ou au moins un fondu de plus de. Lorsque le UINavigationController passe à un nouveau point de vue, il supprime l'ancien. Pour cet effet, vous êtes probablement mieux de simplement l'ajout d'un nouveau point de vue à votre UIViewController et à la décoloration son alpha dans le temps.

Remarque: Si vous n'êtes pas dans votre délégué d'application [fenêtre auto] ne fonctionne pas. Utilisation de l'auto.vue.de la fenêtre , grâce à user412500 post pour le signaler.

8voto

Peter DeWeese Points 10185

Mise à jour pour l'alpha de la décoloration dans iOS 4:

modalController.view.alpha = 0.0;
[self.view.window.rootViewController presentModalViewController:modalController animated:NO];
[UIView animateWithDuration:0.5
                 animations:^{modalController.view.alpha = 1.0;}];

2voto

user412500 Points 49

Il convient [self.view.window] pour que le code fonctionne

(au moins c'est la façon dont il est en ios 3.2)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X