我们在使用模态视图的时候,如果需要再接下来的页面可以进行横竖屏切换,就必须注意一个大坑,我查遍了网络,各种方法用尽了,终于找到了解决方案。
需求:
当前页面必须横屏显示,不能竖屏显示,模态视图弹出页面可以进行横竖屏切换。同时,该项目同时使用导航栏和工具栏。
解决方案:
关于横竖屏切换这方面,网上相关的解决方案很多,在这里不加以描述,我主要想说的是,网上的那些解决方案不一定能解决你项目中遇到的问题。他们更多的是一个测试Demo,在具体项目中,并不能生效。话不多说,直接上代码。
- (BOOL)shouldAutorotate {
return NO;
}
//支持的方向 因为界面A我们只需要支持竖屏
- (UIInterfaceOrientationMask)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskPortrait;
}
网上出现最多的代码就是这个,在只需要竖屏的页面代码中填入。但是呢,你可以试试,这样做有时候并不生效。这个坑就在你同时使用了导航栏和工具栏,所以这就需要你同时在这两个类中加入这两个方法。
但这时候又出现了问题:如果你用的系统默认的导航栏和默认的工具栏,以及几个页面都是单独的controller,这个时候你就需要使用到了继承的概念了,子类化Navigation和TabBar,在子类中重写这两个方法就ok了。同时如果你的几个主Controller都是单独存在的,这样你就必须在每个类里写一遍这两个方法,有点low,所以这里仍然是使用继承的概念,将几个controller全部继承此类,在此类中实现这两个方法。