场景描述:
屏幕旋转是一个很容易设置的问题,只需在你要旋转的UIViewController里边重写下面方法即可:
- (BOOL)shouldAutorotate {
return NO;//不可旋转
}
但是,我重写demo,加入UINavigationController之后,此方法不再生效。
原因分析:
之前的demo使用这种方法是可以的,因为之前的demo中,我是通过present方法跳转到该页面的。重写demo后,我加入了UINavigationController,然后使用push的方法跳转到该页面,之后这个方法不再生效,屏幕旋转不会再走这个方法。
解决办法:
项目的根控制器是导航控制器,我们需要自定义一个导航控制器,然后重写里边的 - (BOOL)shouldAutorotate方法。
具体步骤:
1.自定义一个导航控制器HQNavigationController,继承自UINavigationController。
2.在HQNavigationController.m中重新下面方法:
- (BOOL)shouldAutorotate {
return [[self.viewControllers lastObject] shouldAutorotate];
}
3.原来AppDelegate.m中是这样的:
修改后是这样的: