Я дал приложение с поддержкой 10 контроллеров. Я использую контроллер навигации для загрузки/выгрузки.
Все, кроме одного, находятся в портретном режиме. Предположим, что 7-й VC находится в ландшафте. Мне нужно, чтобы он был представлен в ландшафте, когда он загружается.
Пожалуйста, предложите способ заставить ориентацию перейти от портрета к ландшафту в IOS 6 (и будет хорошо работать и в IOS 5).
Вот как я это делал ПЕРЕД IOS 6:
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
UIViewController *c = [[[UIViewController alloc]init] autorelease];
[self presentModalViewController:c animated:NO];
[self dismissModalViewControllerAnimated:NO];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
Представление и отклонение модального VC заставляло приложение просматривать его ориентацию, поэтому shouldAutorotateToInterfaceOrientation
получал вызов.
Что я пробовал в IOS 6:
- (BOOL)shouldAutorotate{
return YES;
}
-(NSUInteger)supportedInterfaceOrientations{
return UIInterfaceOrientationMaskLandscape;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation{
return UIInterfaceOrientationLandscapeLeft;
}
При загрузке контроллер остается в портрете. После поворота устройства ориентация меняется только нормально. Но мне нужно заставить контроллер автоматически поворачиваться на пейзаж при загрузке, поэтому пользователю придется вращать устройство, чтобы правильно видеть данные.
Другая проблема: после поворота устройства назад к портрету ориентация переходит к портрету, хотя я указал только в supportedInterfaceOrientations
UIInterfaceOrientationMaskLandscape
. Почему это происходит?
Кроме того, вызывается NONE из выше 3 методов.
Некоторые (полезные) данные:
- В моем файле plist я указал 3 ориентации - все, кроме перевернутого.
- Проект был запущен в Xcode 4.3 IOS 5. Все классы, включая xibs, были созданы до Xcode 4.5 IOS 6, теперь я использую последнюю версию.
- В файле plist строка состояния установлена на видимую.
- В файле xib (тот, который я хочу быть в ландшафте) строка состояния "Нет", ориентация установлена на альбомную.
Любая помощь приветствуется. Благодарю.