11
votes

Forcer UIViewController à montrer uniquement en mode paysage

Mon application s'exécute en mode portrait, mais je souhaite montrer un écran en mode paysage uniquement car il s'agit d'un graphique. Qu'est-ce que j'ajouterai à mon UIViewController pour le forcer en mode paysage uniquement?


1 commentaires

3 Réponses :


2
votes

Vous implémentez DOITOROTETATETERINTERFACEORIENTATION: et devez-le renvoyer uniquement Oui pour UITORFACEORIENTISISNACE (PARAM) PARAM est le paramètre que vous avez déclaré pour la méthode.

Cela favorisera la gauche et le paysage à droite, au lieu de vous bloquer à une seule orientation paysagère.


1 commentaires

J'ai essayé cela, mais cela montre toujours l'écran comme portrait. J'ai ajouté: - (BOOL) DOITOROTETATETERINTERFACEOrientation: (UIInterfaceori Entting) Interfaceor IENTATION {RETURNE (interfaceOrientation == UITERFACEORIENTATIONSCAPELTEFT); }



14
votes

Je suis désolé mais cette réponse sera très courte: si vous utilisez l'UINAVIGATIONController, vous ne pouvez pas. La réponse @jer donne est donc incorrecte. La documentation Apple indique:

Tous les contrôleurs de la vue enfant de votre UitabbarController ou UinavigationController ne sont pas d'accord sur un ensemble d'orientation commun.

J'ai récemment répondu à cette question sur une prime et mon application rejetée dans le processus. Lisez sur cela ici: Comment contraindre l'autoratation à une seule orientation pour certaines vues, tout en permettant toutes les orientations des autres?

La seule solution que vous avez, consiste à jetter l'uoinavigationController et à y réécrire avec quelque chose de votre choix.


8 commentaires

Ah merci, l'UinavigationController sera alors le problème. Merci pour le lien, je vais avoir une lecture.


Pour plus de clarté, rien n'a été noté précédent sur un contrôleur NAV et je ne suis pas un lecteur d'esprit. Votre déclaration implique que cela ait connu des informations à l'époque où j'ai fait ma réponse, ce que ce n'était pas.


Désolé @jer, je voulais dire pas de bashing, je n'ai pas eu de bowvote ou rien. J'ai eu une lutte très difficile avec cette question et de nombreuses personnes ont eu la même réponse de DIFFÉRENT DIVERATOROTETERTERFACEORIENTATION: Mises en œuvre. Cela n'a absolument aucun sens comme il est mis en œuvre par Apple, c'est pourquoi il est encore plus difficile de trouver la solution à ce problème apparemment simple. Bravo, EP.


Bien sûr, pas de soucis :) bonne prise.


Je lissais mon cerveau à ce sujet. Une supervision simple. Merci!


Merci! Je devais changer ma sévériste de pousser à modal et d'ajouter un bouton de fermeture mais mon webviewViewController va maintenant aller aménager, merci!


J'ai essayé une implémentation différente de DeversAutoTorTotaTeTointerFaceOrientation: pour les derniers jours pour que cette chose soit faite! Maintenant seulement je suis tombé sur votre réponse. Je suppose que je devais inclure ensemble des fichiers XIB et des storyboards.


@Isuru Regardez une des questions les plus récentes sur l'autre poste, il semble qu'il existe des moyens de le faire à partir de IOS 6: Stackoverflow .COM / A / 14802980/432782



3
votes

En présentant et en rejetant un contrôleur d'affichage de manière modale, vous pouvez forcer une orientation. Définir des animations sur "Non" et vous pouvez le faire sans que l'utilisateur ne soit même réalisé qu'elle s'est produite.

Vous pouvez en savoir plus sur cette réponse de cette Josh sur Y a-t-il une façon documentée de définir l'orientation de l'iPhone?

Je considère cela un peu de hack, mais j'ai mis en œuvre avec succès le code en utilisant cette prémisse pour forcer toute orientation de périphérique.


0 commentaires