您的位置:首页 > 其它

简单适配3.5寸,4寸iPhone屏幕的方法

2014-04-10 19:13 363 查看
首先,Xcode4.5以后多了autoLayout这个功能,简单地说就是以前的项目的元素布局:绝对定位,可以被这种相对位置替代,不用设置具体元素的frame,可以设置元素距离父视图,或者距离另外一个子元素有多远的相对距离,我相信这个方法应该是一劳永逸的正解,也是苹果为什么4.5多这个新功能的初衷。

所以我新创建了一个项目想试验下autoLayout的作用,后来发现各种问题,最常见的原因是相对位置会产生冲突,导致设定相对位置不成功。所以现在采用了一些折中的简单方法,以后肯定还是要学习autoLayout的,目前来看,如果不设置Default-568h@2x这个图片,那么原来的3.5寸屏幕适配的应用显示在4寸屏幕当中会产生黑边儿。下面的方法是建立在设置Default-568h@2x图片的前提下的:

1.视图自适应方法

一些视图,比如UITableView和UIScrollView,会自适应的增长高度,好在宽度不用变,所以一般来说需要细节调整就可以了,比如tableView需要考虑的是背景图片尺寸会不会在4寸屏幕里不够,阴影长度是否不足等等。

2.加载两套Xib方法

以前没做过iPad和iPhone通用程序,但是据说之前的程序就是这么实现的,加载Xib的时候进行判断屏幕的尺寸,然后选择适合屏幕尺寸的视图文件加载,这么做的缺点可能就是使应用大了一些。举个例子:

首先定义判断语句,用来判断是不是iPhone5

#define iPhone5 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 1136), [[UIScreen mainScreen] currentMode].size) : NO)

然后就是加载不同的Xib

    if (iPhone5) {

centerPlayControl=[[CenterPlayViewController alloc] initWithNibName:@”CenterPlayViewController4inch” bundle:nil];

[self addChildViewController:centerPlayControl];

}else{

centerPlayControl=[[CenterPlayViewController alloc] initWithNibName:@”CenterPlayViewController” bundle:nil];

[self addChildViewController:centerPlayControl];

}

3.小范围微调

上述简单解决方案一般都是利用Xib文件,对于一些通过调整Frame来进行动画的视图就需要一些精细的调整,比如一个视图,平时要在屏幕的下方,不可见,点击按钮会让其向上浮现,以前只要写两个frame就可以了,origin.y无非是需要的高度或者480,现在高度480就需要换成实际高度,获取高度可以用这个方法:

[[UIScreen mainScreen] currentMode].size.height*0.5

取出来的值是1136所以要除以一半儿处理为568

总结下来,一劳永逸的方法还是AutoLayout,以后研究
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: