iOS 6 rotation automatique de la confusion
J'ai mon ensemble de l'interface dans un Storyboard. Comment puis-je faire la plupart des ViewControllers uniquement en charge le mode portrait alors que seulement un couple de soutenir toutes les orientations. Je ne peux pas comprendre les pommes de nouveaux rotation automatique du système. Aussi, comment puis-je faire de cette rétro compatibilité de iOS 5?
Voici ce que j'ai écrit sur mon expérience de la migration - blog.logichigh.com/2012/11/13/...
OriginalL'auteur Jake Dahl | 2012-09-22
Vous devez vous connecter pour publier un commentaire.
Dans votre manette de Navigation sous-classe, avant la décision de la vue de dessus de contrôleur dans la pile:
Créer un storyboard de fichier pour ce qui est de la pire chemin à suivre, ça va être un entretien cauchemar pour les synchroniser avec vos mises à jour d'application.
OriginalL'auteur nobre
Vous devriez regarder les WWDC 2012 de vidéos particulièrement ceux dans la section "essentielles" de parler de rotations.
L'on a appelé "T de l'Évolution de Vue des Contrôleurs dans iOS", explique le sujet de rotations (et comment les rendre compatibles avec les différentes version d'iOS) dans de grands détails, avec des explications et des exemples de code, et je ne pouvais pas l'expliquer mieux que Apple 😉
Alors pourquoi ne pas vous mettre en œuvre/remplacer les
supportedInterfaceOrientations
méthode dans chacune de vos ViewController, selon si c'est pour faire tourner ou pas?!Je l'ai fait, et j'ai vérifié à l'aide de NSLog et elle est appelée. Mais quel comportement je l'ai mis dans le premier ViewController (rotation automatique=OUI, supportIngerfaceOrientation=Portrait) est ce qui se passe dans tous les autres contrôleurs de vue qui sont poussés sur la pile de navigation. Aussi, j'ai vérifié sur d'autres vc avec NSLog pour voir si ils vérifient les shouldAutorotate et qui n'est jamais appelé
Dans la racine de votre sous-classe, vous devez l'appeler jusqu'à la topViewController de la méthode, au lieu de renvoyer des valeurs réelles.
OriginalL'auteur AliSoftware
Bien j'ai un peu piraté mon chemin autour de cela.
voici mon sous-classé NavController.h
Je viens de mettre un entier pour @"Doit Tourner" dans les paramètres par défaut sur chaque Vue Contrôleur dans
fonctionne comme un charme!
OriginalL'auteur Jake Dahl
Si vous utilisez un natif rootViewController, vous devez l'étendre à l'appui de iOS5 gracieusement. Ce qui est dit dans le mentionné ci-dessus de la WWDC vidéo.
En gros, si vous utilisez un UINavigationViewController, l'étendre et redéfinir sa
- (NSUInteger)supportedInterfaceOrientations
méthode. Là, regardez-vous vos enfants (vous pouvez simplement des requêtes sur les anciennes méthodes de l'interface de l'orientation que vous avez) et de déterminer ce qui doit être pris en charge et retour à la valeur correcte.La raison que vous devez faire pour être compatibles est 2 choses:
- ils ont désapprouvé l'ancien mode de rotation des trucs
- seulement rootViewController jamais obtient la rotation de l'appel. Le parent doit décider pour ses enfants ce sens qu'il doit être. Tous ces changements sont en ligne avec la nouvelle mise en page automatique des trucs.
Après vous étendez votre nav contrôleur, allez à votre storyboard -> sélectionnez la racine controller (contrôleur de la navigation dans ce cas) -> ensemble de la classe à votre nouvellement écrit la classe.
HTH
OriginalL'auteur dineth
Voici un hack que j'ai utilisé pour soutenir iOS 5 appareils et iOS 6 appareils (comme pour l'iPhone 5). Dans votre préfixe de fichier, ajoutez la ligne suivante #define
Puis, n'importe où vous utilisez shouldAutorotateToInterfaceOrientation: au lieu d'utiliser shouldAutorotateToInterface_fixed:
OriginalL'auteur BadPirate
Voici mon sous-classé RootNavController.h
OriginalL'auteur TONy.W