随着iPhone 5、iPhone 6、iPhone 6 Plus、iPhone X等机型的发布,iPhone也进入了一个多屏时代。不同的屏幕尺寸给我们带来了很大的困扰。今天,我们来看看iPhone的适配。
屏幕的单位是以英寸为单位。换算关系如下:
因为iPhone的屏幕尺寸数值比较奇怪,都不是整数,所以只能取一个近似值。事实上,在像素级的差异上,肉眼是很难分清楚细微差异的。
逻辑分辨率以point(pt)为单位,物理分辨率以pixel(px)为单位。
区分逻辑分别率和物理分辨率是因为在早期iPhone 3GS之前,iOS绘制图形以point为单位。在这个时期point和pixel严格对应在一起。在iPhone 3GS上:
因为逻辑分辨率和物理分辨率存在着一定的比例关系,这种比例的关系称为缩放因子。其对应关系为:
在iPhone 3GS上,缩放因子为1(以“@1x”来表示)。在iPhone 4上,缩放因子为2(以“@2x”来表示)。
奇葩的iPhone 6屏幕
iPhone 6有iPhone 6和iPhone Plus两个屏幕尺寸。其中iPhone 6 Plus的屏幕均为5.5寸屏幕。其标明缩放因子为@3x,我们通过缩放因子计算,其分辨率应该为1242 × 2208。但是,实际上iPhone 6 Plus的像素为1080 × 1920。严格来说,iPhone 6 Plus的缩放因子应该为:
实际上,iPhone 6 Plus上做了特殊的缩放处理。假设我们画一条100pt的线。经过如下步骤进行最终显示出来:
以逻辑点描述
开始我们以点的方式描述直线所在的起始位置。100pt的直线。渲染成像素点
通过缩放因子@3x,将点渲染成逻辑画布。100pt被渲染成了300px。进行缩放采样
对渲染进行缩放采样,计算实际显示的画布。缩小的倍数为1.15(@3x/@2.6x)。300px被缩小成了260px。
目前iPhone 6/7/8 Plus均同样处理。用@3x这样的缩放因子可能是为了编程的时候更容易。有兴趣的可以看一下这篇文章《奇葩的iPhone 6 屏幕》。
像素密度PPI(Pixel Per Inch)是指每英寸上容纳的像素数量。
注意,这里有两个限制条件:“在一定的距离内”、“在手机显示屏上”。有兴趣的可以详细了解,PPI值对我们适配影响不大,这里不展开。
好了,关于屏幕分辨率的基础概念就讲到这里。下一篇《屏幕分辨率和适配规则-iPhone篇(规则篇)》再讲讲适配的规则。