44 votes

Comment obtenir de l'iphone orientation actuelle?

Existe t il une méthode pour obtenir les iPhones d'orientation? Je n'ai pas besoin qu'elle en degrés ou en radians, je veux le retour d'un UIInterfaceOrientation objet. J'ai juste besoin d'un if-else de construction comme

if(currentOrientation==UIInterfaceOrientationPortrait ||currentOrientation==UIInterfaceOrientationPortraitUpsideDown) {
//Code
}  
if (currentOrientation==UIInterfaceOrientationLandscapeRight ||currentOrientation==UIInterfaceOrientationLandscapeLeft ) {
//Code
}

Merci à l'avance!

118voto

Satyajit Points 2671

C'est probablement ce que vous voulez:

UIInterfaceOrientation interfaceOrientation = [[UIApplication sharedApplication] statusBarOrientation];

Vous pouvez ensuite utiliser le système de macros comme:

if (UIInterfaceOrientationIsPortrait(interfaceOrientation))
{

}

Si vous voulez l'orientation du périphérique utilisation:

UIDeviceOrientation deviceOrientation = [[UIDevice currentDevice] orientation];

Cela inclut les énumérations comme UIDeviceOrientationFaceUp et UIDeviceOrientationFaceDown

11voto

Bjinse Points 616

Comme discuté dans d'autres réponses, vous avez besoin de la interfaceOrientation, pas la deviceOrientation.

La manière la plus simple pour cela est d'utiliser la propriété interfaceOrientation sur votre UIViewController. (Donc, le plus souvent, il suffit de: auto.interfaceOrientation fera l'affaire).

Les valeurs possibles sont:

UIInterfaceOrientationPortrait           = UIDeviceOrientationPortrait,
UIInterfaceOrientationPortraitUpsideDown = UIDeviceOrientationPortraitUpsideDown,
UIInterfaceOrientationLandscapeLeft      = UIDeviceOrientationLandscapeRight,
UIInterfaceOrientationLandscapeRight     = UIDeviceOrientationLandscapeLeft

Souvenez-vous: À gauche de l'orientation est entré en tournant votre appareil vers la droite.

5voto

Chuck Points 138930

Demander à l'actuel UIDevice pour son orientation.

4voto

FreeAppl3 Points 443

Voici un extrait de code que j'ai écris parce que j'étais bizarre questions, de revenir dans ma vue de la racine lors de l'orientation a été changé .... Je vous vois juste l'appel de la méthode qui devrait avoir été appelé, mais ne semblent être .... cela fonctionne très bien pas d'erreurs

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];

    if ([[UIDevice currentDevice]orientation] == UIInterfaceOrientationLandscapeLeft){
        //do something or rather
        [self 
shouldAutorotateToInterfaceOrientation:UIInterfaceOrientationLandscapeLeft];
        NSLog(@"landscape left");
    }
    if ([[UIDevice currentDevice]orientation] == UIInterfaceOrientationLandscapeRight){
        //do something or rather
        [self 
shouldAutorotateToInterfaceOrientation:UIInterfaceOrientationLandscapeRight];
        NSLog(@"landscape right");
    }
    if ([[UIDevice currentDevice]orientation] == UIInterfaceOrientationPortrait){
        //do something or rather
        [self shouldAutorotateToInterfaceOrientation:UIInterfaceOrientationPortrait];
        NSLog(@"portrait");
    }
}

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