对目标 C 和 iOS 来说仍然是新手,我面临一个新问题。
这很简单,我的应用程序中只需要一个 UIViewController 就可以处于横向模式,所以我以这种方式构建了我的应用程序:
一个自定义 UINAvigationController : MyNavController 在我的 MainStoryBoard.storyboard 中设置为“是初始视图控制器”。然后我添加这个 navController ...:
- (NSUInteger)supportedInterfaceOrientations
{
return [[self topViewController] supportedInterfaceOrientations];
}
...能够控制自定义导航控制器的哪些 UIVIewController 子级可以处于横向。
在景观 UIVIewController 我设置:
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskLandscapeLeft ;
return UIInterfaceOrientationMaskPortrait;
}
所以我可以得到这个控制器景观与否。在我的笔尖(landscape.xib)的这个风景控制器中,我在 UIPortrait 模式下设置了一个欢迎视图,在这个视图后面我有我的风景视图。所以当用户按下控制器时,他看到他必须转动他的 iPhone 屏幕。我使用以下方法收听方向变化:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged) name:UIDeviceOrientationDidChangeNotification object:nil];
在orientationChanged 中,我隐藏了纵向视图,然后我们可以看到横向视图。
它可以工作,但是当您快速旋转时,效果会很差,有时视图会隐藏有时不会。所以有我的问题:
- 在基于导航的应用程序上,使只有一个控制器景观功能的最佳方法是什么?
我用 :
[self.navigationController pushNavigationController:landscapeController];
是否有另一种方法不推动 ladnscapeController 使其不再依赖于 navController ?
谢谢大家,欢迎任何帮助。