现在的位置: 首页 > 综合 > 正文

[iOS开发兼容问题之]关于同步IOS6和IOS5旋屏问题

2013年10月06日 ⁄ 综合 ⁄ 共 1254字 ⁄ 字号 评论关闭

关于同步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

抱歉!评论已关闭.