Как определить ориентацию устройства на iOS? - PullRequest
71 голосов
/ 06 апреля 2011

У меня есть вопрос о том, как определить ориентацию устройства на iOS.Мне не нужно получать уведомления об изменениях, только сама текущая ориентация.Кажется, это довольно простой вопрос, но я не смог обернуть голову вокруг него.Вот что я сделал до сих пор:

UIDevice *myDevice = [UIDevice currentDevice] ;
[myDevice beginGeneratingDeviceOrientationNotifications];
UIDeviceOrientation deviceOrientation = myDevice.orientation;
BOOL isCurrentlyLandscapeView = UIDeviceOrientationIsLandscape(deviceOrientation);
[myDevice endGeneratingDeviceOrientationNotifications];

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

Ответы [ 11 ]

0 голосов
/ 18 июля 2019

Мой текущий способ сделать это:

+ (BOOL)isPortrait {
    let window = UIApplication.sharedApplication.delegate.window;
    if(window.rootViewController) {
        let orientation =
        window.rootViewController.interfaceOrientation;
        return UIInterfaceOrientationIsPortrait(orientation);
    } else {
        let orientation =
        UIApplication.sharedApplication.statusBarOrientation;
        return UIInterfaceOrientationIsPortrait(orientation);
    }
}

Если по какой-то причине еще нет rootViewController, но все равно отказоустойчиво для statusBarOrientation ...

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