2017-01-12 4 views
1

J'ai une application avec 4 viewcontrollers. Il faut être présenté uniquement en mode paysage. Les 3 autres peuvent être soit paysage ou portrait.Objectif-c en utilisant UIInterfaceOrientationMask pour contrôler l'orientation

Dans la zone Informations sur le déploiement, Orientation du périphérique, j'ai les options Upside Down, Landscape Left et Landscape Right. Dans Info.plist, j'ai 3 prises en charge d'orientation d'orientation: Paysage gauche, Paysage droit et Portrait Haut Accueil.

Dans mon contrôleur de vue où je veux seulement le paysage que j'ai: - (BOOL) shouldAutorotate { return YES; }

-(UIInterfaceOrientationMask) supportedInterfaceOrientations { 
    return UIInterfaceOrientationMaskLandscapeLeft+UIInterfaceOrientationMaskLandscapeRight; 
} 

Dans les 3 autres contrôleurs de vue je: - (BOOL) shouldAutorotate { return YES; }

-(UIInterfaceOrientationMask) supportedInterfaceOrientations { 
    return UIInterfaceOrientationMaskAll; 
} 

Avec tous ces paramètres: 1) Le point de vue qui ne devrait être dans le paysage est seulement dans le paysage, de sorte que ce qui est bon. 2) Les 3 autres vues peuvent être affichées en mode paysage à gauche, paysage à droite et portrait avec le bouton en haut. 3) Lorsque j'essaie de faire pivoter l'écran dans l'autre position portrait, il ne pivote pas. Donc, je change la page Déploiement ou la page Info.plist pour inclure ce 4ème choix qui n'est pas coché. Le résultat est que les trois autres vues tournent bien, mais la vue en mode paysage pivote maintenant en mode portrait.

Que dois-je faire pour obtenir mon premier paysage de vue seulement et les 3 autres pour faire tourner n'importe quelle façon?

Répondre

0

Vous pouvez utiliser ce lien pour contrôler votre orientation, cela a fonctionné pour moi.

https://stackoverflow.com/a/24928474/6438500

+0

Merci pour la réponse. – Mark

+0

Couper et coller le code comme indiqué dans le contrôleur de vue a généré 2 erreurs concernant l'utilisation de la variable non déclarée appDelegate. – Mark

+0

Ici, appDelegate est une instance de AppDelegate. Vous devez créer votre instance AppDelegate. – Sunny