Проблема setOrientation
У меня действительно странная проблема с ориентацией. У меня есть последовательность контроллеров представления под контроллером навигации. Один из них может принимать любую ориентацию. Когда я покидаю ориентацию, я должен использовать setOrientation. Самое смешное, что вращение происходит по мере перехода на следующую страницу. Обычно это не проблема, за исключением одного случая - от UIDeviceOrientationPortraitUpsideDown до нормального состояния все мои верхние смонтированные элементы перемещаются вверх примерно на восьмую часть страницы.
Я думаю, что есть три способа это исправить:
- Каким-то образом отделить setOrientation от моего вызова pushViewController (так что новое представление не нужно переворачивать)
- Установите мои элементы для закрепления в верхней части устройства в лучшем виде (я проверил, и они, кажется,)
- Сбросьте измерение Y для элементов в методе ViewDidLoad, но это кажется неправильным.
Вот мой толчок нового взгляда на код стека:
[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationPortrait];
ResultSelect_ViewController *resultSelect = [[ResultSelect_ViewController alloc] initWithNibName:@"ResultSelect" bundle:nil];
[self.navigationController pushViewController:resultSelect animated:YES];
Кто-нибудь еще находит странным, что симулятор не позволяет вам тестировать перевернутый портрет?
3 ответа
Способ избежать ошибки поворота при повороте вверх ногами на портрет - это не делать этого. Вместо этого поверните дважды, останавливаясь на полпути (скажем, UIDeviceOrientationLandscapeRight
). Вопрос времени не в том, чтобы использовать сон, а в том, чтобы реализовать didRotateFromInterfaceOrientation
и запустить второй поворот (или перейти к следующему виду) в этой точке.
Просто чтобы заметить: Apple начала использовать статический (возможно, даже динамический) анализатор и блокирует приложения, которые используют частные методы (например, setOrientation:
) от входа в магазин. Произошло с моим другом на прошлой неделе.
Вы пробовали строить против iPhone OS 3.0 и полагаться только на shouldRotateToInterfaceOrientation:
? Поведение кажется фиксированным (по сравнению с реализацией в 2.x) и - по крайней мере для меня - выполняет свою работу.
Обычно вы не поддерживаете перевернутую ориентацию. Это кажется стандартным поведением приложений Apple и имеет смысл. Перевернутый случай не очень полезен и может привести пользователя в замешательство.
У нас была похожая проблема, когда подпредставления перемещались вверх и вниз по основному виду при перелистывании вверх ногами. Мы просто перестали поддерживать с ног на голову, и это в основном решило проблему.