2015-11-19 3 views
1

J'ai une application prend en charge à la fois l'orientation portrait et paysage. Mais dans un viewcontroller, je veux juste qu'il soit présent en mode PAYSAGE. J'essaie primordial des méthodes de changement d'orientation tels queForce un UIViewController juste paysage dans iOS 9

- (BOOL)shouldAutorotate { 
    return NO; 
} 

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

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation { 
    return (UIInterfaceOrientationLandscapeLeft | UIInterfaceOrientationLandscapeRight); 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation { 
    if (UIInterfaceOrientationIsLandscape(toInterfaceOrientation)) { 
     return YES; 
    } 
    return NO; 
} 

Mais aucun d'entre eux sont appelés dans iOS 9. Par conséquent, ce viewcontroller présent à la fois portrait et paysage. En revanche, cela fonctionne parfaitement dans iOS 8.

donc ennuyeux, est là de toute façon à la force juste un viewcontroller présenté en mode paysage dans iOS 9

MISE À JOUR: Comme la réponse de Ronak Chaniyara, je résolu mon problème, il suffit un contrôleur est en mode paysage. Maintenant, je suis confronté à un autre problème. Si je veux forcer un contrôleur juste en mode portrait, j'implémente ces méthodes dans le contrôleur mais il est toujours pivoté si je fais pivoter l'écran.

Est-ce la solution fonctionne toujours en mode portrait, ou je dois trouver une autre approche pour forcer un contrôleur juste en mode portrait

Répondre

4

je pense que question sera vous avez défini les orientations autorisées dans info.plist qui l'emporte apparemment tout ce que vous faites nulle part ailleurs tout au long du projet.

Pour corriger le problème, j'ai supprimé les entrées de info.plist et les ai définies dans les paramètres du projet. Maintenant tout fonctionne comme prévu.

Espérons que cela aide.

+1

cela fonctionne comme un charme. J'ai supprimé toutes les orientations de support dans info.plist puis redéfinir ces méthodes sur chaque viewcontroller. –

+0

Ne travaillait pas pour moi. Mais je trouve étrange que toutes les fonctions ci-dessus ne sont jamais appelées ... – Chris

1

Regardez votre fichier Info.plist. Ici vous avez une clé nommée "Supported Interface Orientation" avec un groupe pour la version iPhone et un autre pour l'iPad.

Ici, vous pouvez supprimer la valeur "Portrait (bouton d'accueil inférieur)" et la remplacer par "Paysage (bouton d'accueil gauche)" ou "Paysage (bouton d'accueil droit)".

J'espère que cela a aidé!

+0

Merci, j'ai essayé mais ça ne fonctionne pas –

+0

votre solution m'aide beaucoup. Je supprime toutes les orientations de support dans info.plist et puis remplace ces méthodes sur chaque viewcontroller –

1

De cette façon, vous pouvez le faire:

  1. Aller à la définition des objectifs
  2. Aller à info développement
  3. orientation changement de périphérique au paysage et à décocher toutes les autres options.

Hope this vous aider

+0

Merci, j'ai essayé mais ça ne fonctionne pas –

+0

votre solution m'aide beaucoup. Je supprime toutes les orientations de support dans info.plist, puis remplacer ces méthodes sur chaque contrôleur de vue –