将新视图推入UINavigationViewController时强制使用纵向方向

4
我有一个TabBar基础应用程序,仅支持一个特定视图(UINavigationController的根视图)的横向方向。现在我想强制所有其他视图为此导航控制器的纵向方向。
我尝试使用[[UIDevice currentDevice] setOrientation:UIDeviceOrientationPortrait];这段代码可以很好地工作,但是这是一个私有API调用,我不能冒着应用被拒绝的风险。
我还尝试手动旋转下一个视图,但这只会旋转视图而不是导航或选项卡栏。
是否有类似的方法来强制改变方向?
1个回答

6
目前还没有办法做到这一点。看看这个问题,我有同样的问题。对于一个带有选项卡的应用程序,你必须让所有东西都自动旋转,或者什么都不旋转。你可以找到方法在每个视图上以不同的方式回答shouldAutorotate,但实际上这并不起作用。我不知道这是故意的行为还是一个错误,无论如何,我所知道的唯一可行的解决方案(不使用未记录的API)是自己管理旋转,并且不依赖于自动旋转。

换句话说,这意味着您需要启动方向通知(查看UIDevice,有关于设备方向开始和停止通知的方法),然后为每个要旋转的视图注册为观察者,并手动管理方向,就像这样(我不记得从哪里得到这个片段):

// Rotates the view.
CGAffineTransform transform = CGAffineTransformMakeRotation(M_PI/2);
self.view.transform = transform;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接