关于同步ios6和ios5旋屏问题
相信大家都知道,ios6并不支持 shouldAutorotateToInterfaceOrientation 而强制打开项目的所有方向旋屏,会给一部分项目带来不便,特别是rootController是横屏的情况下,如果纵向放置会出现明显的错位,这点在ios5会出现,ios6系统自动检测了,这里简单介绍下我的处理方法:
在项目的AppDelegate文件加入
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window{
return UIInterfaceOrientationMaskAll;
}
告诉项目这个支持所有方向的旋转 — 为后面的支持做铺垫,如果项目没声明这个,加上第一步没打开所有方向,那么后面有些旋屏会出现错位
在只需要横屏的控制器内添加
// ios5下的旋屏
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return UIInterfaceOrientationIsLandscape(interfaceOrientation);
}
// ios6下的旋屏
-(BOOL)shouldAutorotate {
return YES;
}
-(NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskLandscape;
}
在需要全方位旋屏的控制器内添加
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
return YES;
}
-(NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskAll;
}
-(BOOL)shouldAutorotate {
return YES;
}
这样就很好的解决了两个版本的全方向旋屏问题,这里解释不这样处理会有什么情况
A:打开了项目的所有方向,即第一步的所有方向全打开,这样做在ios6下完成正常,但是在ios5的第一个控制器(不是开始页面default)会出现纵屏现象(当然是你放置的位置为纵向才会出现 * _ * 这都知道的事不再多说)
B:如果没有在AppDelegate声明项目方向,在控制器旋屏情况下有时候会卡屏,选不过来,而且会有严重的错位
原文http://www.jcsample.com/jcsample/archives_399.html