Вы должны загрузить один вид, затем проверить ориентацию и загрузить другой, если это необходимо. Вы проверяете ориентацию в shouldAutorotateToInterfaceOrientation:
, возвращая да, если хотите повернуть.
Я использую навигационный контроллер для управления переходом. Если у меня установлен портретный режим вверх, и устройство вращается, я нажимаю альбомный вид, а затем возвращаюсь в альбомный вид, когда он возвращается в портретный режим.
Edit:
Я возвращаю ДА для всех ориентаций в
shouldAutorotateToInterfaceOrientation:
но будет ли это вызываться, когда приложение
катера? Вы выдвигаете свой взгляд изнутри?
этой функции?
Константы ориентации - это не глобальные запросы, которые вы запрашиваете, а часть сообщений, отправляемых контроллером системой. Таким образом, вы не можете легко определить ориентацию до загрузки контроллера вида. Вместо этого вы проводите приложение в определенную ориентацию (обычно в портретной ориентации), а затем сразу же поворачиваетесь. (См. Мобильное Safari. Оно всегда начинается в портретной ориентации, а затем поворачивается в альбомную ориентацию.)
Это два метода, которые я использовал, чтобы поменять местами портретную и альбомную ориентацию.
У всех трех контроллеров представления есть этот метод:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}
На портрете есть это:
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
if (toInterfaceOrientation==UIInterfaceOrientationLandscapeRight) {
[self.nav pushViewController:rightLVC animated:NO];
}
if (toInterfaceOrientation==UIInterfaceOrientationLandscapeLeft) {
[self.nav pushViewController:leftLVC animated:NO];
}
}
У каждого контроллера ландшафта есть это:
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
if (toInterfaceOrientation==UIInterfaceOrientationPortrait) {
[self.nav popViewControllerAnimated:NO];
}
Приложение запускается в портретной ориентации. Если устройство ориентировано на пейзаж, оно выдвигает соответствующие ландшафты. Когда устройство поворачивается обратно в портретное положение, оно отображает пейзаж. Для пользователя это выглядит так же, как реорганизация себя для другой ориентации.