对于目标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吗?
感谢所有人,欢迎任何帮助。
答案 0 :(得分:0)
在推送下一个控制器之前使用此代码
[UIApplication sharedApplication].statusBarOrientation = UIInterfaceOrientationLandscapeRight;
弹出后退控制器时使用此代码
[UIApplication sharedApplication].statusBarOrientation = UIInterfaceOrientationIsPortrait(UIInterfaceOrientationMaskPortrait);