Wow! Une demi-journée passée et le problème résolu! Hi hi.
Comme le dit la documentation ci-dessus, c'est vraiment ça! Les points clés sont les suivants:
Plus de responsabilité est transférée vers l'application et le délégué de l'application. Maintenant, les conteneurs iOS (comme UINavigationController) ne consultent pas leurs enfants pour déterminer s'ils doivent pivoter automatiquement. Par défaut, une application et les orientations d'interface prises en charge d'un contrôleur de vue sont définies sur UIInterfaceOrientationMaskAll pour l'idiome iPad et UIInterfaceOrientationMaskAllButUpsideDown pour l'idiome iPhone.
Ainsi, chaque fois qu'il y a un changement avec le contrôleur racine, le système demande au délégué de l'application "Alors, on pivote ou pas?"
Si "on pivote":
les orientations prises en charge sont récupérées uniquement si ce contrôleur de vue renvoie YES de sa méthode shouldAutorotate.
ensuite, le système demande à notre délégué de l'application de
- (NSUInteger) application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window {
return ...;
}
C'est vraiment assez simple.
Comment déterminer quand devons-nous autoriser le mode Portrait ou Paysage, etc. - c'est à vous de décider. Tester avec le contrôleur racine n'a pas fonctionné pour moi en raison de certains points, mais cela fonctionne:
- (NSUInteger) application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window {
return self.fullScreenVideoIsPlaying ?
UIInterfaceOrientationMaskAllButUpsideDown :
UIInterfaceOrientationMaskPortrait;
}
La propriété "fullScreenVideoIsPlaying" est définie manuellement par moi chaque fois que j'en ai besoin.
L'autre chose importante à prendre en compte est l'énumération. Comme cela est dit dans la documentation ... (lisez attentivement ce qui concerne l'iPad/l'iPhone ci-dessus). Ainsi, vous pouvez jouer avec cela selon vos besoins.
Un autre petit problème était un comportement bogué après la fermeture du lecteur vidéo. Il y a eu une fois où il n'a pas changé l'orientation, mais c'est arrivé une seule fois et de manière étrange, et uniquement dans le simulateur (iOS 6 seulement, bien sûr). Donc, je ne pouvais même pas réagir, car cela est arrivé de manière inattendue et après avoir cliqué rapidement sur d'autres éléments de mon application, il est revenu à l'orientation normale. Donc, je ne suis pas certain - cela pourrait être un retard dans le fonctionnement du simulateur ou quelque chose d'autre (ou vraiment un bug :) ).
Bonne chance!