ориентация запуска iPad, когда он лежит на поверхности - PullRequest
11 голосов
/ 10 октября 2010

У меня есть следующий код:

 -(void)viewWillAppear:(BOOL)animated {

    UIDeviceOrientation orientation = [[UIDevice currentDevice] UIInterface];

    if(orientation==UIDeviceOrientationLandscapeLeft || orientation==UIDeviceOrientationLandscapeRight) {
        NSLog(@"Device Landscape");
    } else {
        NSLog(@"Device Portrait");
    }

 }

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

Есть ли какие-либо идеи о лучшем способе определения ориентации интерфейса при вызове viewWillAppear?

Спасибо

Ответы [ 3 ]

27 голосов
/ 10 октября 2010

Вы должны использовать [self interfaceOrientation] вместо ориентации устройства.

9 голосов
/ 25 февраля 2011

[[UIApplication sharedApplication] statusBarOrientation] также работает, если вы где-то в коде, который не имеет доступа к [self interfaceOrientation]

0 голосов
/ 10 октября 2010

Во-первых, знаете ли вы о свойстве interfaceOrientation UIViewController?Похоже, вы пытаетесь продублировать это.Если вы действительно хотите это сделать, просто подпишитесь на уведомления об изменении ориентации устройства, проверьте, является ли новая ориентация действительной ориентацией интерфейса (это макрос для этого), и если да, сохраните значение в некоторой переменной (например, lastSeenOrientation).Тогда вы можете положиться на это значение в любом месте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...