Orientação de dispositivo e interface com iOS

Primeiro, você tem que saber a diferença entre UIDeviceOrientation</code> and UIInterfaceOrientation</code>.The device orientation is the orientation the device is currently at. We can get the device orientation with this call:

[[UIDevice currentDevice] orientation]

Isso retornará um dos seguintes estados:
UIDeviceOrientationUnknownUIDeviceOrientationPortraitUIDeviceOrientationPortraitUpsideDownUIDeviceOrientationLandscapeLeftUIDeviceOrientationLandscapeRightUIDeviceOrientationFaceUpUIDeviceOrientationFaceDown</code>

Como você pode ver, existem dois estados FaceUp e FaceDown. Um deles será devolvido quando o dispositivo estiver deitado sobre uma mesa. Então, quando esse for o caso, não sabemos como fazer o layout de nossa IU.

O truque é obter o UIInterfaceOrientation da barra de status. Como queremos que nossa GUI esteja na mesma orientação da barra de status. Para obter o UIInterfaceOrientation da barra de status, usamos este código:

[[UIApplication sharedApplication] statusBarOrientation]

Um pequeno exemplo de como usá-lo:

UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;
if(orientation == UIInterfaceOrientationLandscapeLeft) {
// orientation is landscape left
} else if(orientation == UIInterfaceOrientationLandscapeRight) {
// orientation is landscape right
} else if(orientation == UIInterfaceOrientationMaskPortrait) {
// orientation is portrait
} else if(orientation == UIInterfaceOrientationMaskPortraitUpsideDown) {
// orientation is portrait upsidedown
}

Se você apenas deseja saber se a orientação é retrato ou paisagem, você pode usar estes dois métodos: UIInterfaceOrientationIsLandscape(orientation)</code> UIInterfaceOrientationIsPortrait(orientation)</code>