IOS版本和IPHONE5适配总结

今天花了一天的时间对IOS6和IPHONE5进行适配 [由于自己用的机器是IPHONE5,所以没出什么问题,但是在IPHONE4上就出问题了,都是IOS7版本,还有一台IPOD是IOS6版本,也出问题~ 哎,一开始没注意适配,现在得花这精力去修改~  特总结一下,防止以后犯错误,提高工作效率,加油!]

 

由于习惯问题,都在视图控制器下的viewDidLoad去创建自定义的UI元素,因为IOS版本问题,所以self.view.frame也会不同,如果要实现相同的UI布局,用代码进行测试,发现以下4种情况

3.5寸IPHONE

 

IPHONE5,IPHONE5S设备

结论:针对有导航栏的视图控制器,IOS6系统下self.view下的subviews的Origin.y是从导航栏底部开始计算的,高度是整个屏幕高度减去20后的值为参照,IOS7系统下是从0开始计算的,高度是整个屏幕高度为参照!

 

适配方案探讨:

1.在每个视图控制器的viewDidLoad去判断IOS版本和IPHONE尺寸,创建不同的frame,去设置每个UI元素 [当前由于时间问题,采取这种方案,发现略显繁琐,不易维护]

2.在每个视图控制器下加入以下代码:

1 if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {
2             self.edgesForExtendedLayout = UIRectEdgeNone;
3         }
View Code

这样不管在IOS6还是IOS7下,元素的Origin.y都是一样的,不用再去分别设置了

然后只要控制每个元素的高度就行了,如下图: 

 

3.在第二种方法前提下,在每个视图控制器下重写loadView方法

1 -(void) loadView
2 {
3     [super loadView];
4     CGRect rect=  [[UIScreen mainScreen] applicationFrame];
5     UIView* view=[[UIView alloc] initWithFrame:rect];
6     view.backgroundColor=[UIColor purpleColor];//根据项目需求,修改你自己的背景颜色
7     self.view=view;
8     [view release];
9 }
View Code

这样第二种方法里的高度设置都可以设置一样的,不用分别设置了~~

高度以屏幕高度减去20后的值为参照

 

好了,目前总结就是这样了,没看网上的描述,全是自己推敲出来的,或许会有更好的解决方案,欢迎大家提出! 本来才进入IOS开发阵营不久,之前做WP和WIN8的开发,也欢迎小伙伴们交流下~ 始终有一颗微软粉的心啊 !

IOS版本和IPHONE5适配总结,,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。