2010-07-10 6 views
4

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

НО

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

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

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

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

ответ

4

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

+0

А, я не знал об IsValidInterfaceOrientation, это полезно. Интересно, если я использую statusBarOrientation в делегате приложения, это дает мне действительное направление, но НЕПРАВИЛЬНОЕ - как вы говорите, кажется, что при запуске ориентация еще не сообщается делегату приложения. Самое недоумение ... похоже, мне нужно будет перестроить вещи :-( – Roger