20 votes

Déterminer l'orientation de l'écran plutôt que l'orientation de l'appareil

En [[UIDevice currentDevice] orientation] renvoie un certain nombre d'orientations autres que les orientations portrait et paysage. Je sais parfaitement qu'il faut vérifier si l'orientation renvoyée est "valide". Malheureusement, si l'orientation renvoyée n'est PAS "valide" alors que mon application requiert une orientation spécifique pour déterminer les méthodes à exécuter, je n'ai aucun moyen de savoir quelle méthode est appropriée.

J'ai essayé un certain nombre de solutions à ce problème, mais pour l'instant la seule chose que j'ai pu faire est de vérifier si l'orientation est LandscapeLeft o LandscapeRight et si ce n'est pas le cas, je suppose que l'écran est en orientation portrait. Malheureusement, ce n'est pas le cas lorsque l'appareil est tourné vers le haut et que l'écran est en orientation paysage.

J'ai essayé d'utiliser l'orientation du contrôleur de vue parent :

parentController.interfaceOrientation;

Malheureusement, il a retourné UIDeviceOrientationUnknown . Je cherche sur SO et Google quelqu'un d'autre qui a été confronté à ce problème. Il me semble idiot qu'Apple puisse avoir autre chose que LandscapeLeft/Right et PortraitUp/Down pour leurs orientations.

Ce dont j'ai vraiment besoin, c'est de l'orientation des APPS et non des appareils, car ils sont parfois en désaccord. Des conseils ?

49voto

Chamara Paul Points 568

Avez-vous essayé d'utiliser UIInterfaceOrientationPortrait / UIInterfaceOrientationLandscape ? J'obtiens généralement d'assez bons résultats en utilisant ces méthodes :

if(UIInterfaceOrientationIsPortrait(viewController.interfaceOrientation)) {
    //do portrait work
} else if(UIInterfaceOrientationIsLandscape(viewController.interfaceOrientation)){
    //do landscape work
}

Vous pouvez également essayer UIDeviceOrientationIsValidInterfaceOrientation .

Ceux-ci ne renvoient que l'orientation de l'application, qui peut ne pas être la même que celle de l'appareil.

Si cela ne fonctionne pas, vous pouvez également essayer :

[[UIApplication sharedApplication] statusBarOrientation]

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