Определить ориентацию iPad при запуске приложения - PullRequest
0 голосов
/ 11 марта 2012

Кто-нибудь знает способ программного определения ориентации iPad при запуске приложения.

Я использую следующий механизм.

- (void) detectDeviceInitialOrientation
{
    [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];

    MyAppDelegate *appDelegate=(MyAppDelegate*)[[UIApplication sharedApplication] delegate];

    UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];

   if (UIDeviceOrientationIsPortrait(orientation)) {
       appDelegate.orintation = PORTRAIT;
   }
   else if (UIDeviceOrientationIsLandscape(orientation)) {
       appDelegate.orintation = LANDSCAPE;
   }
}

Но он не может обнаружить устройствоориентация, когда он лежал параллельно полу.Итак, я ищу другое решение.Пожалуйста, помогите ......

1 Ответ

1 голос
/ 11 марта 2012

Посмотрите на перечисление UIDeviceOrientation в документации.

typedef enum {
   UIDeviceOrientationUnknown,
   UIDeviceOrientationPortrait,
   UIDeviceOrientationPortraitUpsideDown,
   UIDeviceOrientationLandscapeLeft,
   UIDeviceOrientationLandscapeRight,
   UIDeviceOrientationFaceUp,
   UIDeviceOrientationFaceDown
} UIDeviceOrientation;

Обратите внимание, что это определяет UIDeviceOrientationFaceUp и UIDeviceOrientationFaceDown.К сожалению, нет встроенной проверки того, находится ли устройство в одной из этих ориентаций, как для портрета или пейзажа.Тем не менее, вы можете проверить себя с помощью простого оператора if.Как то так:

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];

UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];

if (orientation == UIDeviceOrientationFaceUp || orientation == UIDeviceOrientationFaceDown) {
    // device is flat on the ground
}
...