Определение ориентации экрана, а не ориентации устройства
Метод [[UIDevice currentDevice] orientation]
возвращает несколько ориентаций за пределы портретной и альбомной ориентации. Мне хорошо знать, проверяет, верна ли возвращенная ориентация, к сожалению, если возвращаемая ориентация НЕ "действительна", когда мое приложение требует определенной ориентации, чтобы определить, какие методы запускать, я не знаю, какой метод необходимо.
Я попытался решить ряд решений, но пока единственное, что мне удалось решить, - проверить, соответствует ли ориентация LandscapeLeft
или LandscapeRight
, и если я не предполагаю экран находится в портретной ориентации. К сожалению, это неверно, когда устройство находится лицом вверх, а экран находится в альбомной ориентации.
Я попытался использовать ориентацию контроллера родительского представления:
parentController.interfaceOrientation;
К сожалению, он вернул UIDeviceOrientationUnknown
. Я ищу SO и Google для кого-то, кто столкнулся с этой проблемой. Мне кажется глупым, что у Apple будет только LandscapeLeft/Right
и PortraitUp/Down
для их ориентации.
То, что мне действительно нужно, это ориентация APPS, а не устройства, так как это иногда бывает не так. Любые советы?
Ответы
Ответ 1
Пробовали ли вы использовать UIInterfaceOrientationPortrait
/UIInterfaceOrientationLandscape
? Я обычно получаю неплохие результаты, используя следующие методы:
if(UIInterfaceOrientationIsPortrait(viewController.interfaceOrientation)) {
//do portrait work
} else if(UIInterfaceOrientationIsLandscape(viewController.interfaceOrientation)){
//do landscape work
}
Вы также можете попробовать UIDeviceOrientationIsValidInterfaceOrientation.
Они вернут ориентацию приложения, которое может не совпадать с ориентацией устройства.
Если они не работают, вы также можете попробовать:
[[UIApplication sharedApplication] statusBarOrientation]