我有一个 TabBar 基础应用程序,它仅支持一种特殊视图(UINaviagtionController 的根视图)的横向方向。现在我想强制此导航控制器的所有其他视图为纵向。
我尝试过使用
[[UIDevice currentDevice] setOrientation:UIDeviceOrientationPortrait];
这很好用,但这段代码是私有 api 调用,我不能冒被应用程序拒绝的风险。
我还尝试手动旋转下一个视图,但这仅旋转视图,而不旋转导航或选项卡栏。
有类似的方法来强制方向改变吗?
目前还没有办法做到这一点。
看看这个question https://stackoverflow.com/questions/1782196/selective-autorotation-of-uicontrollers,我也有同样的问题。对于标签栏应用程序,您必须拥有自动旋转的所有内容,否则什么都没有。您可以找到让 shouldAutorotate 在每个视图上以不同方式回答的方法,但实际上这是行不通的。我不知道这是一个预期的行为还是一个错误,无论如何,我所知道的唯一可行的解决方案(不使用未记录的 API)是自己管理旋转,并且不依赖自动旋转。
换句话说,这意味着您需要启动方向通知(查看 UIDevice,有一些方法可以启动和停止有关设备方向的通知),然后对于您想要旋转的每个视图,注册为观察者,并手动管理方向,如下所示(不记得我从哪里得到这个片段):
// Rotates the view.
CGAffineTransform transform = CGAffineTransformMakeRotation(M_PI/2);
self.view.transform = transform;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)