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>