Question

Comment savoir si le paysage est UIDeviceOrientationFaceUp FaceUp ou FaceUp Portrait?

Quelqu'un peut-il me dire?

Était-ce utile?

La solution

Il est impossible, parce que l'accéléromètre ne peut pas détecter la rotation autour de l'axe z. Sur un iPhone 4, vous pourriez peut-être utiliser le gyroscope pour cela (en utilisant CoreMotion), mais UIDevice ne dispose pas d'une API pour cela. Vous auriez alors également de définir ce que la position de départ est, parce que vous ne pouvez pas détecter dans quelle direction l'utilisateur est du point de vue de l'appareil.

Autres conseils

UIDeviceOrientation ne vous dira l'orientation du dispositif physique. Vous devez utiliser des méthodes que l'utilisation UIInterfaceOrientation (de UIApplication) de prendre des décisions selon que l'écran est en mode portrait et paysage.

Vous pouvez utiliser UIInterfaceOrientationIsLandscape() et UIInterfaceOrientationIsPortrait() avec un UIInterfaceOrientation aussi.

Je sais que c'est une vieille question maintenant, mais en regardant tout le monde des réponses est d'être trop pédant. Au cas où quelqu'un d'autre tombe par hasard sur ceci:

La réponse à votre problème est pour vous de garder une variable secondaire qui est l'une de vos orientations acceptées.

Lorsque la notification d'orientation de l'appareil arrive, il suffit de regarder à l'orientation entrant et voir si c'est un un acceptable, (portrait / paysage PAS faceup / facedown) puis mettez à jour votre variable secondaire, et enfin déclencher une ui / app rafraîchissement à partir de là en utilisant votre variable secondaire comme source d'orientation.

Cela aura pour effet de bloquer l'orientation à l'orientation « dernière bonne connue ».

UIDeviceOrientationFaceUp et UIDeviceOrientationFaceDown sont des orientations lorsque le dispositif est à plat (comme sur une table). Portrait et Paysage ne font pas de sens dans ce cas.

Il n'y a aucun moyen que vous pouvez trouver de l'orientation. J'ai trouvé une solution de contournement.

CGRect screenBounds = [[UIScreen mainScreen]bounds];

if(screenBounds.size.width > screenBounds.size.height)
{
    // This means FaceUP/Down is in Landscape
}
else
{
    // This means FaceUp/Down is in Portrait
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top