En utilisant le code que vous montriez là, vous pouvez définir la propriété modalTransitionStyle de imagePickerView. Mais, vos valeurs possibles sont (à partir de la documentation du SDK):
- UIModalTransitionStyleCoverVertical: Lorsque le contrôleur de vue est présenté, son point de vue glisse vers le haut à partir du bas de l'écran. Au moment du renvoi, la vue redescend. C'est le style de transition par défaut.
- UIModalTransitionStyleFlipHorizontal: Lorsque le contrôleur de vue est présenté, la vue active initie un basculement 3D horizontal de droite à gauche, ce qui entraîne l'affichage de la nouvelle vue comme si elle se trouvait au dos de la vue précédente. Au moment du renvoi, le basculement se produit de gauche à droite, revenant à la vue d'origine.
- UIModalTransitionStyleCrossDissolve: Lorsque le contrôleur de vue est présenté, la vue en cours disparaît alors que la nouvelle vue apparaît en même temps. Au moment du renvoi, un type similaire de fondu enchaîné est utilisé pour revenir à la vue d'origine.
Votre autre option nécessite que vous obteniez beaucoup plus d'amateurs. Supposons que le navigateur de navigation est le contrôleur de la vue racine de l'application, et qu'il est stocké dans une propriété de votre délégué d'application appelée navigationController. Vous pouvez implémenter les méthodes suivantes:
- (void)curlInViewController:(UIViewController *)viewController {
self.curledViewController = viewController;
[UIView beginAnimations:@"curlInView" context:nil];
[UIView setAnimationTransition:UIViewAnimationTransitionCurlDown forView:self.window cache:YES];
[self.navigationViewController.view removeFromSuperview];
[self.window addSubview:viewController.view];
[UIView commitAnimations];
}
- (void)curlOutViewController {
[UIView beginAnimations:@"curlOutView" context:nil];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)
[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.window cache:YES];
[self.curledViewController removeFromSuperview];
[self.window addSubview:navigationController.view];
[UIView commitAnimations];
}
- (void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context {
if([animationID isEqualToString:@"curlOutView"]) {
self.curlViewController = nil;
}
}
Je ne pense pas que vous le pouvez, puisque vous présentez un contrôleur de vue modale, vous ne changez pas de vue mais de contrôleurs. Je viens de le tester avec des animations UIView basiques et le paramètre 'animated' réglé sur' NO', mais cela ne fonctionnait pas correctement. – Joost
JoostK, vous devriez mettre cela dans une réponse afin que le système puisse le traiter. En ce moment, Yassin n'a aucun moyen de marquer la question comme si vous répondiez correctement. – TechZen