2009-12-01 3 views
4

J'ai une application de base TabBar qui ne prend en charge l'orientation Paysage que pour une vue spéciale (la vue racine d'un UINaviagtionController). Maintenant, je veux forcer l'orientation portrait pour toutes les autres vues pour ce contrôleur de navigation. J'ai essayé d'utiliserOrienter le portrait forcé en poussant la nouvelle vue vers UINavigationViewController

[[UIDevice currentDevice] setOrientation:UIDeviceOrientationPortrait];

Cela fonctionne très bien, mais ce morceau de code est un appel api privé et je ne peux pas risquer un rejet de l'application.

J'ai également essayé de faire pivoter la vue suivante manuellement mais cela ne fait pivoter que la vue et non la navigation ou la barre d'onglets.

Existe-t-il un moyen similaire de forcer le changement d'orientation?

Répondre

6

Il n'existe actuellement aucun moyen de le faire. Jetez un oeil à ce question, j'ai les mêmes problèmes. Avec une application tabbar, vous devez avoir tout pour autorotate, ou rien. Vous pouvez trouver des moyens pour que shouldAutorotate réponde différemment à chaque vue, mais cela ne fonctionne pas. Je ne sais pas si c'est un comportement intentionnel ou un bug, de toute façon la seule solution viable dont je suis conscient (sans utiliser d'API non documentée) est de gérer la rotation par vous-même, et ne comptez pas sur l'autorotation. Cela signifie en d'autres termes que vous devez lancer des notifications d'orientation (regardez UIDevice, il existe des méthodes pour démarrer et arrêter les notifications sur l'orientation du périphérique), puis pour chaque vue que vous voulez faire pivoter en tant qu'observateur et gérer l'orientation manuellement, comme ceci (ne me souviens pas où j'ai obtenu cet extrait):

// Rotates the view. 
CGAffineTransform transform = CGAffineTransformMakeRotation(M_PI/2); 
self.view.transform = transform; 
+0

Merci Andy son aide pour moi – Naresh

Questions connexes