iPhone5 分辨率编程小结

因为iPhone5 的新分辨率,最近大家都忙着在更新应用以支持新的分辨率,虽然新版的xcode4.5 可以直接在xib里面创建 4寸屏的view,但实际上它却没那么智能,它支持4寸屏了,但拉出的控件即便是在4寸屏幕的环境下它的frame值仍然是以4寸屏幕为基础的,也就是说如果你的view的frame 为 (0,0,320,548),设置了高度宽度适应,它在3.5寸屏幕环境运行的时候这个view的值仍然是(0,0.320,548),就算它的值看起来在3.5寸下完全显示,但请不要被它的假像所蒙骗了.

有可能你觉得这个值没什么关系,当然,如果你的所有控件都是通过xib拉出来的,那没什么.但很多时候情况并不是那么简单,有时你要将一个view通过代码放在一个你想要的位置,那时候你就需要它的坐标了.在以前,你可以把它写死,因为以前是统一分辨率,但现在不同了.不同分辨率下控件的坐标和大小要进行调整.

本人虽然曾经做过Android的开发,但是对多分辨率的处理却不是很在行,想了几种方案,觉得最方便的是以下这种.

在controller的viewDidLoad 或者 loadView方法中设定 self.view.frame

Objective-c代码 
//适应屏幕分辨率 
CGRect frame = self.view.frame; 
frame.size.height = [UIScreen mainScreen].bounds.size.height - 20; 
self.view.frame = frame;

因为在当前界面是带有状态栏,所以在高度那里减去20 ,如果是带有导航条的,就再减去44,如果带有tabbar的,就减去48
在此方法设定之后,controller 的  view.frame就是实际当中的大小,也就是说它的值是准确的,那接下来加入其他view的时候一切的计算都将会变得简单很多.
比如创建一个tableView,上边距为20,下边距20

Objective-c代码 
UITableView *tableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 20, 320, self.view.frame.size.height - 40) style:UITableViewStylePlain]; 
 [self.view addSubview:tableView];

效果如下:

4寸屏幕

iPhone5 分辨率编程小结

3.5寸屏

iPhone5 分辨率编程小结

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/3628449ec9653eb0c38a03bc94ef2e13.html