大家都知道在iOS开发当中对于UI适配问题可以从如下两个方面去考虑:
1.比例适配
2.利用autolayout自动布局
通常情况来说,利用auto自动布局是一个比较好的方案,开发者可以利用storyboard添加约束,以及sizeclass完美适配,如果你是比较喜欢纯代码的方式的话,那么PureLayout 以及Masonary也是不错的自动布局第三方库(目前项目当中也正在用PureLayout)。但是,相信有不少人会有过这样的困惑,随着控件的约束太多,而导致约束冲突,然而对于自己来说看上去也很烦。我们在刚接触iOS开发的时候应该都是从frame来开始学习布局的,所以从frame的角度去布局的话我们也会很好的去理解。
这里主要探讨一下利用frame在项目中适配iOS屏幕吧!首先我们获取屏幕的宽,高!
#define RRScreenWidth [UIScreen mainScreen].bounds.size.width
#define RRScreenHeight [UIScreen mainScreen].bounds.size.height
那么问题来了,iOS设备的尺寸如下
设备 iPhone | 宽 Width | 高 Height | 对角线 Diagonal | 逻辑分辨率(point) | Scale Factor | 设备分辨率(pixel) | PPI |
3GS | 2.4 inches (62.1 mm) | 4.5 inches (115.5 mm) | 3.5-inch
| 320x480 | @1x | 320x480 | 163 |
4(s) | 2.31 inches (58.6 mm) | 4.5 inches (115.2 mm) | 3.5-inch | 320x480 | @2x | 640x960 | 326 |
5c | 2.33 inches (59.2 mm) | 4.90 inches (124.4 mm) | 4-inch | 320x568 | @2x | 640x1136 | 326 |
5(s) | 2.31 inches (58.6 mm) | 4.87 inches (123.8 mm) | 4-inch | 320x568 | @2x | 640x1136 | 326 |
6 | 2.64 inches (67.0 mm) | 5.44 inches (138.1 mm) | 4.7-inch | 375x667 | @2x | 750x1334 | 326 |
6+ | 3.06 inches (77.8 mm) | 6.22 inches (158.1 mm) | 5.5-inch | 414x736 | @3x | (1242x2208->) 1080x1920 | 401
|
从宽的角度来说,4s、5、5s为320,6、6s为375,6+为414
从高的角度来说,4s为480,5、5s为568,6、6s为667,6+为736
如果利用宽来进行适配的话那么5和4s会有一点点差异,如果看5和6,我们通常为选择 让 RRScreenWidth/640或者RRScreenWidth/960,这样的话根据微妙的计算来控制其实是可以的,但是在4s上效果其实并不好。
所以我采用了利用屏幕高度进行适配,用RRScreenHeight/1280乘以(你自己给定的高度或者宽度),通过这样就能很好的适配了。自己的一点愚见,希望大家能再开发中能够很好的利用。