Подтвердить что ты не робот

Определение ориентации экрана, а не ориентации устройства

Метод [[UIDevice currentDevice] orientation] возвращает несколько ориентаций за пределы портретной и альбомной ориентации. Мне хорошо знать, проверяет, верна ли возвращенная ориентация, к сожалению, если возвращаемая ориентация НЕ "действительна", когда мое приложение требует определенной ориентации, чтобы определить, какие методы запускать, я не знаю, какой метод необходимо.

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

Я попытался использовать ориентацию контроллера родительского представления:

parentController.interfaceOrientation;

К сожалению, он вернул UIDeviceOrientationUnknown. Я ищу SO и Google для кого-то, кто столкнулся с этой проблемой. Мне кажется глупым, что у Apple будет только LandscapeLeft/Right и PortraitUp/Down для их ориентации.

То, что мне действительно нужно, это ориентация APPS, а не устройства, так как это иногда бывает не так. Любые советы?

4b9b3361

Ответ 1

Пробовали ли вы использовать UIInterfaceOrientationPortrait/UIInterfaceOrientationLandscape? Я обычно получаю неплохие результаты, используя следующие методы:

if(UIInterfaceOrientationIsPortrait(viewController.interfaceOrientation)) {
    //do portrait work
} else if(UIInterfaceOrientationIsLandscape(viewController.interfaceOrientation)){
    //do landscape work
}

Вы также можете попробовать UIDeviceOrientationIsValidInterfaceOrientation.

Они вернут ориентацию приложения, которое может не совпадать с ориентацией устройства.

Если они не работают, вы также можете попробовать:

[[UIApplication sharedApplication] statusBarOrientation]