UIDevice Ориентация - PullRequest
       32

UIDevice Ориентация

0 голосов
/ 24 января 2011

Как узнать, является ли UIDeviceOrientationFaceUp альбомным FaceUp или Portrait FaceUp?

Может кто-нибудь сказать мне?

Ответы [ 5 ]

3 голосов
/ 06 августа 2012

Я понимаю, что это старый вопрос сейчас, но, глядя на ответы, все чрезмерно педантичны. На случай, если кто-нибудь еще наткнется на это:

Ответом на вашу проблему является сохранение вторичной переменной, которая соответствует любой принятой вами ориентации.

Когда приходит уведомление об ориентации устройства, просто посмотрите на входящую ориентацию и посмотрите, является ли она приемлемой (портрет / пейзаж, НЕ лицевой стороной вверх / вниз), затем обновите вторичную переменную и, наконец, запустите обновление пользовательского интерфейса / приложения оттуда используя вашу вторичную переменную в качестве источника ориентации.

Это приведет к блокировке ориентации к ориентации «последний известный товар».

3 голосов
/ 24 января 2011

UIDeviceOrientation только скажет вам ориентацию физического устройства.Вам нужно использовать методы, которые используют UIInterfaceOrientation (из UIApplication) для принятия решений в зависимости от того, находится ли экран в портретном и альбомном режимах.

Вы можете использовать UIInterfaceOrientationIsLandscape() и UIInterfaceOrientationIsPortrait() с UIInterfaceOrientation тоже.

0 голосов
/ 05 мая 2015

Нет способа узнать об ориентации. Я нашел обходной путь.

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
}
0 голосов
/ 24 января 2011

UIDeviceOrientationFaceUp и UIDeviceOrientationFaceDown - это ориентации, когда устройство лежит горизонтально (как на столе).Портрет и пейзаж не имеют смысла в этом случае.

0 голосов
/ 24 января 2011

Это невозможно, поскольку акселерометр не может обнаружить вращение вокруг оси z. На iPhone 4 вы могли бы использовать гироскоп для этого (используя CoreMotion), но UIDevice не имеет API для этого. Затем вам также необходимо определить начальную позицию, поскольку вы не можете определить, в каком направлении находится пользователь с точки зрения устройства.

...