Вопрос

Как выяснить, является ли UideviceoratationFaceup Landscape Face Up или Portrait Face Up?

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

Это было полезно?

Решение

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

Другие советы

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

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

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

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

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

Это будет иметь эффект блокировки ориентации на «последнюю известную хорошую» ориентацию.

Uideviceoratationfaceup и uideviceoratationfacefown - это ориентации, когда устройство лежит плоско (например, на таблице). Портрет и ландшафт не имеют смысла в этих случаях.

Вы никак не можете узнать по ориентации. Я нашел обходной путь.

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
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top