Как получить текущую ориентацию iPhone или последнюю ориентацию устройства?

В моем приложении изображение появляется, когда пользователь встряхивает устройство. Существуют разные изображения для ландшафтного и портретного режима. Если ориентация iPhone - портретная или альбомная, все работает нормально. Но если это UIDeviceOrientationFaceDown или UIDeviceOrientationFaceUp, изображение должно зависеть от последней использованной ориентации, потому что вид по-прежнему отображается для этой ориентации.

Как мне получить последнюю ориентацию устройства?


person Knodel    schedule 19.08.2010    source источник


Ответы (2)


Я понял это! Пришлось проверить ориентацию строки состояния!

[UIApplication sharedApplication].statusBarOrientation
person Knodel    schedule 19.08.2010
comment
Что делать, если строка состояния скрыта? - person Shailesh; 04.07.2013

В методе shouldAutoRotate класса он передает параметр с именем interfaceOrientation. Этот метод вызывается каждый раз при изменении ориентации устройства. Вы можете сохранить это как переменную и посмотреть на нее позже, чтобы определить последнюю ориентацию.

 1 = standard portrait
 2 = upsidedown
 3 = button right landscape
 4 = button left landscape. 

Также вызов self.interfaceOrientation даст вам текущую ориентацию устройства.

Надеюсь, это, по крайней мере, поможет вам начать в правильном направлении.

person E. Criss    schedule 19.08.2010
comment
self.interfaceOrientation дает мне только UIDeviceOrientationFaceDown (Up), поэтому это не помогает. Попробую выяснить, не перезаписывается ли interfaceOrientation метода shouldAutoRotate при ориентации FaceUp. Спасибо! - person Knodel; 19.08.2010