Je suis surpris que personne n'ait encore trouvé cette réponse :
Dans tous mes tests, lors du rejet d'un contrôleur de vue modal, l'orientation préférée du contrôleur de vue parent, définie dans le fichier shouldAutorotateToInterfaceOrientation
est respectée même si elle fait partie d'un UINavigationController. La solution à ce problème est donc simple :
Créez un UIViewController fictif avec un UIImageView comme arrière-plan. Définissez l'image à l'image default.png que votre application utilise au démarrage.
Cuando viewWillAppear
est appelé dans votre contrôleur de vue racine, présentez simplement le contrôleur de vue factice sans animation.
quand viewDidAppear
est appelé dans votre contrôleur de vue fictif, et le contrôleur de vue est renvoyé avec une belle animation de dissolution croisée.
Non seulement cela fonctionne, mais cela a l'air bien ! BTW, juste pour clarifier, j'ai fait le contrôleur de vue racine de viewWillAppear
comme ça :
- (void)viewWillAppear:(BOOL)animated
{
if ( dummy != nil ) {
[dummy setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
[self presentModalViewController:dummy animated:NO];
[dummy release];
dummy = nil;
}
...
}
6 votes
Pour tous les futurs lecteurs, veuillez noter que ce fameux problème est maintenant résolu par Apple à partir de 2011. Notez le projet de test dans la réponse ci-dessous.