Ориентация запуска iPad, когда плоские проблемы в делегате приложения - PullRequest
4 голосов
/ 11 июля 2010

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

НО

Если я переведу устройство в альбомный режим, а затем положу его на стол, все пойдет не так.Используется правильный экран-заставка, но изображение, используемое для его анимации, является неправильным, и я проследил это до следующего кода, который возвращает 5, т.е. ни один из режимов portraitupsidedown / Portrait / landscapeleft / landscaperight, которые он должен возвращать.

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
UIInterfaceOrientation orientation = [UIDevice currentDevice].orientation;

Само устройство четко знает правильную ориентацию для использования, так как строка состояния верна, и действительно первый контроллер представления поворачивается в правильную ориентацию - но ясно, что [UIDevice currentDevice] .orientationэто не то же самое, что устройство на самом деле знает, и поэтому код, который я использую для развертывания соответствующей графики внутри делегата приложения, неверен.

Наверное, мой вопрос - как я могу это исправить?Есть ли способ получить правильную ориентацию устройства в делегате приложения?

Ответы [ 2 ]

4 голосов
/ 11 июля 2010

UIInterfaceOrientation является подмножеством UIDeviceOrientation. Если UIDeviceOrientationIsValidInterfaceOrientation ложно, то обычно можно принять UIInterfaceOrientationPortrait. Помимо проверки ориентации устройства, вы также можете проверить statusBarOrientation из UIApplication, но при запуске оно также может не иметь действительного значения.

0 голосов
/ 19 апреля 2018

Вот быстрое решение, которое сработало для меня:

if UIDevice.current.orientation.isFlat { //do something }
...