Приложение на основе навигации: только один ландшафтный UIVIewController
Все еще плохо знакомы с целью C и iOS, я сталкиваюсь с новой проблемой.
Это довольно просто, мне нужно было только один UIViewController в моем приложении, чтобы быть в ландшафтном режиме, поэтому я создал свое приложение следующим образом:
Один пользовательский UINAvigationController: MyNavController, установленный как "Является начальным контроллером представления" в моей MainStoryBoard.storyboard. Затем я добавляю в этот navController...:
- (NSUInteger)supportedInterfaceOrientations
{
return [[self topViewController] supportedInterfaceOrientations];
}
... чтобы иметь возможность контролировать, какие дочерние элементы UIVIewController пользовательского навигационного контроллера могут быть в горизонтальной ориентации.
В ландшафтном UIVIewController я установил:
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskLandscapeLeft ;
return UIInterfaceOrientationMaskPortrait;
}
так что я могу получить этот контроллер пейзаж или нет. В этом ландшафтном контроллере в моем nib-файле (landscape.xib) я установил режим приветствия в режиме UIPortrait, а за этим видом у меня был ландшафтный вид. Поэтому, когда пользователь нажимает на контроллер, он видит, что ему нужно повернуть экран своего iPhone. Я слушаю изменение ориентации, используя:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged) name:UIDeviceOrientationDidChangeNotification object:nil];
В ориентации изменен я скрываю портретный вид и затем мы можем видеть пейзажный вид.
Это работает, но когда вы вращаете быстро, это работает очень плохо, иногда вид скрыт, иногда нет. Итак, есть мои вопросы:
- В приложении на основе навигации, как лучше всего настроить только один контроллер?
Я использую:
[self.navigationController pushNavigationController: landscapeController];
Есть ли другой способ не выдвигать ladnscapeController, чтобы он больше не зависел от navController?
Спасибо всем, любая помощь будет приветствоваться.
1 ответ
Используйте этот код, прежде чем нажать следующий контроллер
[UIApplication sharedApplication].statusBarOrientation = UIInterfaceOrientationLandscapeRight;
используйте этот код, когда поп-контроллер
[UIApplication sharedApplication].statusBarOrientation = UIInterfaceOrientationIsPortrait(UIInterfaceOrientationMaskPortrait);