在实际的SDK开发中,我们往往会遇到由一个竖屏的控制器跳转到横屏的控制器中,特别是在SDK的开发中,我们无法掌握整个项目支持的方向。
在整个项目支持竖屏的模式下,我们需要在强制横屏的控制器中重写两个方法:
- (BOOL)shouldAutorotate
{
return NO;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
return UIInterfaceOrientationLandscapeRight;
}
第一个方法是告诉控制器,是不是允许屏幕旋转;第二个方法是控制器modal出来后的方向。
这样还不能万事大吉,我们需要搞清楚这两个方法是在控制器的生命周期的哪些步骤之前调用的,不然,我们在写控制器的子view们的frame的时候会出现问题,他们有可能还会用present进来前的方向来算屏幕宽和高。
经过测试,这两个方法是在viewDidLoad中或者之前调用的,所以我们可以在viewWillAppear方法中写子view们的布局代码,这样就不会产生宽和高之间的混乱了。