在iOS开发及测试中,文字和图片的机型适配是一项重要工作,这篇文章给大家介绍下常用的iPhone的屏幕分辨率相关概念及各个机型的屏幕适配技术。
屏幕适配相关概念
1. 屏幕尺寸
屏幕尺寸是指屏幕的对角线长度。
一般情况下,我们说iPhone 8的屏幕是4.7寸屏,就是指iPhone 8的屏幕对角线为4.7英寸。
屏幕的单位是以英寸为单位,换算关系:1 inch = 2.54cm = 25.4mm。
2. 分辨率
历代iPhone的分辨率:
从比例可以看出,在iPhone 5和iPhone X进行了加长处理。中间的各个版本的比例是一致的。
3. 逻辑分辨率和物理分辨率
逻辑分辨率以point(pt)为单位,物理分辨率以pixel(px)为单位。
区分逻辑分别率和物理分辨率是因为在早期iPhone 3GS之前,iOS绘制图形以point为单位。在这个时期point和pixel严格对应在一起。在iPhone 3GS上:1 pt = 1 px。到了iPhone 4开始,苹果引入了Retina屏幕。在一定物理单位内可以显示2倍的像素。iPhone 4的屏幕物理尺寸还是3.5寸,分辨率为640 × 960,提升了4倍。也就是说,原先的1 point可以容纳4个pixel。
到了iPhone 4,逻辑分辨率和物理分辨率的关系就成了:1 pt = 2 px。
4. 缩放因子(scale)
因为逻辑分辨率和物理分辨率存在着一定的比例关系,这种比例的关系称为缩放因子。其对应关系为:1 pt = scale * px。
在iPhone 3GS上,缩放因子为1(以“@1x”来表示)。在iPhone 4上,缩放因子为2(以“@2x”来表示)。
1x, 2x, 3x 的含义:屏幕模式,描述的就是屏幕中一个点有多少个 Rendered Pixels 渲染,对于2倍屏(又称 Retina 显示屏),会有 2 * 2 = 4 个像素的面积渲染,对于3倍屏(又称 Retina HD 显示屏),会有 3 * 3 = 9 个像素的面积渲染。
例如下图所示,iPhone3GS和iPhone4的逻辑分辨率都是320*480,也就是说两个手机机型屏幕大小是一样的,物理分辨率iPhone3GS是320*480,iPhone4是640*960,因此iPhone4在同样一个尺寸上的像素点数是iPhone3GS的2*2倍,所以iPhone4上同样尺寸的图像展示色彩更丰富,清晰度更高。
设备上展示的文字和图片都是由一个个像素点构成的,在相同的尺寸下,如果有更多的像素来展示某一图片,即缩放因子越高,那么图片就会看起来更加细腻,清晰度更多,色彩更丰富。
5. 像素密度PPI
像素密度PPI(Pixel Per Inch)是指每英寸上容纳的像素数量。
计算PPI,可以简单用勾股定理计算出对线上出现的像素,再除以对角线上长度:
将iPhone 4屏幕数据代入公式:
PPI对显示的影响:手机的屏幕是以像素的方式一个一个呈现出来的。PPI值越高,意味着有更细腻的画面。
较低PPI的屏幕看起来有颗粒感。但是当PPI值到达一定程度后,再继续提升肉眼就分别不出来了。这就是苹果提出的Retina显示屏的概念。在一定的距离内,手机显示屏在200PPI以上时,肉眼就分辨不出单个像素点了。
以往各个机型的各个屏幕适配参数整理如下:
屏幕适配技术方案
1. 屏幕适配参考标准
屏幕适配中,物理像素和逻辑像素是两个绕不开的概念。使用哪种像素单位为准进行适配呢?分别看一下使用两种像素单位适配的结果:
如果使用物理像素
如果只用物理像素(pixel)来作为单位,会出现什么问题。来看一下,一个100px的正方形在不同手机下的打开的效果。
iPhone 3GS和iPhone 4的屏幕大小一样,但是iPhone 4的像素密度是iPhone 3GS的2两倍。所以一样100px的正方形,在iPhone 4上看起来像是缩小了一倍。在iPhone 4和iPhone 6上的显示大小是一样的。
如果使用逻辑像素
所幸的是,我们看到的是iPhone 3GS和iPhone 4的逻辑像素(point)是一致的。如果使用逻辑像素,100pt的正方形在不同手机下打开的效果是如何的。
![]()
好了,可以看到100pt的正方形在所有屏幕上看起来大小都一样了。
事实上,iPhone使用的就是逻辑像素作为显示单位的。
2. 屏幕适配策略
随着iPhone逐步多屏幕尺寸化之后,每新增一种屏幕都进行重新开发,这无疑会给适配工作带来大量的重复性工作。所以,在具体实现时,苹果公司推出了一系列的适配技术。旨在当屏幕尺寸发生改变时,程序能够自动适应屏幕,而不会造成重复性的适配工作。
其中,autoResizing和autoLayout是两种不同的屏幕适配技术。
1)autoResizing
autoResizing是iPhone早期的一种适配技术,目前已经越来越少被使用了。autoResizing是用于设置子控件相对于父控件的位置关系的。
如图可以看出,autoResizing可以设置如下关系:
相对于父控件固定顶距离;
相对于父控件固定底距离;
相对于父控件固定左距离;
相对于父控件固定右距离;
跟随父控件横向拉伸;
跟随父控件纵向拉伸;
autoResizing存在一定局限,它没有提供控件之间的关系,控件之间的距离并不能设定。所以,在屏幕改变时,很难控制两个控件之间的空隙。所以,现在越来越少人使用autoResizing进行适配。
2)autoLayout
autoLayout是目前最流行且被广泛使用的屏幕布局技术。autoLayout提供了比autoResizing更丰富的约束规则。可以说,autoLayout是autoResizing升级版。
autoLayout可以设置:
控件自身:
宽度;
高度;
和屏幕等比例宽高;
控件与控件之间的关系:
左对齐/右对齐/顶对齐/底对齐;
水平中心对齐;
垂直中心对齐;
文本底线对齐;
等宽;
等高;
控件和父控件的关系:
对齐水平;
对齐垂直;
左边距/右边距/顶边距/底边距;
现在APP设计开发必须考虑适配大、中、小三种屏幕。目前适配策略是先选择iPhone 6作为基准设计尺寸,然后通过一套适配规则自动适配到另外两种尺寸。这套适配规则总结起来就一句话:文字流式,控件弹性,图片等比缩放。
文字流式(fluid):屏幕变大时,保持文字大小不变,随着屏幕变大,横向拉宽文字的显示区域。
为什么要保持文字大小不变?字体不是越大越好的。通过测试,iPhone的字体大概在20px~36px时(排除某些特殊的设计),会得到比较良好的阅读体验。保持字体大小在一定范围内,就是为了保证阅读起来比较舒服。
控件弹性(flexible):屏幕变大时,保持控件大小不变,随着屏幕的变大,横向调整控件的相对位置。相比于将控件固定在某个位置上,这种布局能更好地保持控件在页面上的平衡。同时,也能保证屏幕变大的时候,控件不会因为被拉大而失真。
图片等比缩放(scale):对于图片,屏幕变大时,没办法只拉伸横向的,这样会导致图片的比例失调。所以,对于图片,要保证等比放大。也就是说,在宽度跟随屏幕变大的时候,高度也等比地变大。
图片相对于图标来说,有更高的像素,所以拉大图片失真的效果并不明显。
屏幕适配测试
了解屏幕适配的相关概念及屏幕适配技术方案后,就可以根据开发的适配策略来关注测试需要关注的内容:比如使用文字流式适配策略,需要关注各个机型的文字排版等问题;使用空间弹性策略适配策略,需要关注各个机型上控件的相对位置是否合理;使用图片等比缩放适配策略,需要关注各个机型屏幕图片是否失真,比例是否合理等;根据设计提供的图片,关注不同缩放因子的图片是否在各个机型上正常适配等。。。
以上是小编对屏幕适配的相关概念和适配技术方案的学习分享,屏幕适配测试具体关注哪些内容,后续会进行总结再分享,如果大家有其他更好的方法或建议,欢迎留言补充~
![cf82e5685ad14725de38e08a772bc165.png](https://i-blog.csdnimg.cn/blog_migrate/2ef0bc30127d0cc5e29558d8d02fd58f.png)
本次就先记录这么多,下一次再见。
希望大家能有所收获,一起进步、互相学习!
搜狗测试微信号:Qa_xiaoming
搜狗测试QQ粉丝群:459645679