35 votes

Déterminer UIInterfaceOrientation sur iPad

Je n'ai pas besoin de spécifier l'orientation dans ce cas, j'ai juste besoin de le détecter, mais je vais avoir des ennuis. J'ai conditionnelle code qui doit fonctionner uniquement en mode portrait, et si l'appareil est en mode paysage j'ai besoin de faire autre chose. Depuis le deviceOrientation n'est pas nécessairement la même que la interfaceOrientation, je ne peux pas venir avec un moyen de tester la mode portrait.

La plupart des tutoriels j'ai trouver sur Google sont des moyens de force du paysage ou de faire une sorte de rotation. La seule chose que je veux faire est de déterminer ce que l'orientation est. Voici mon code qui ne fonctionne pas:

-(void)viewDidLoad {
    [super viewDidLoad];
    //currentOrientation is declared as UIInterfaceOrientation currentOrientation
    currentOrientation = [[UIApplication sharedApplication] statusBarOrientation];
NSLog(@"%@",currentOrientation);  // == NULL
}

J'ai besoin de déterminer la valeur de la interfaceOrientation et programme conditionnellement. Merci pour votre aide!

77voto

zoul Points 51637

Connaissez - vous le interfaceOrientation propriété de l' UIViewController classe?

 - (void) viewDidLoad {
    [super viewDidLoad];
    BOOL isPortrait = UIDeviceOrientationIsPortrait(self.interfaceOrientation);
    // now do whatever you need
}
 

Ou êtes-vous après [[UIDevice currentDevice] orientation] ?

41voto

slycrel Points 2706

Surtout au lancement, j'ai constaté que les éléments suivants sont toujours précis pour l'interface utilisateur, indépendamment de ce que l'UIDevice dit que l'orientation est.

 [UIApplication sharedApplication].statusBarOrientation
 

10voto

Devang Vyas Points 161

self.interfaceOrientation n'est pas fiable dans certaines situations. Par exemple, la réorganisation des onglets dans une application de barre d'onglets renvoie une valeur incorrecte.

Cependant, [UIApplication sharedApplication].statusBarOrientation est toujours fiable. Tu m'as fait gagner beaucoup de temps slycrel. Merci.

4voto

Akshay Dhavale Points 41
UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;

if ((orientation == UIInterfaceOrientationLandscapeLeft)
||  (orientation == UIInterfaceOrientationLandscapeRight) )
{
    //Landscape
}
else
{
    //Portrait
}

1voto

Vignesh Points 6572

Je sais que c'est un très vieux poste. Cependant, je voudrais ajouter un point pour dire qu'il vaut mieux vérifier que l'orientation de la barre d'état est meilleure. Chaque fois que vous appelez self.interfaceorientation il appelle shouldRotateToOrientation chaque fois. Si vous avez écrit du code dans cette méthode, il sera exécuté. Soyez donc prudent!.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X