1.逻辑分辨率和物理分辨率
型号 | 屏幕尺寸(inch) | 逻辑分辨率(point) | logic pixel | 缩放因子(scale f actor) | 物理分辨率(pixel) | 像素密度(PPI) |
---|---|---|---|---|---|---|
iPhone3GS | 3.5 | 320 * 480 | - | @1x | 320 * 480 | 163 |
iPhone4/4s | 3.5 | 320 * 480 | - | @2x | 640 * 960 | 326 |
iPhone5/5s | 4 | 320 * 568 | - | @2x | 640 * 1136 | 326 |
iPhone6/6s | 4.7 | 375 * 667 | - | @2x | 750 * 1334 | 326 |
iPhone6Plus/6s Plus | 5.5 | 414 * 736 | 1080x1920 (downsampling) | @3x | (1242x2208->) | 401 |
注释
1.单位inch (英寸) : 1 inch = 2.54cm = 25.4mm
2.PPI (像素密度) : 表示沿着对角线,每英寸所拥有的像素(pixel)数目,PPI的数值越高,代表显示屏能够以越高的密度显示图像,即通常所说的分辨率越高,颗粒感越弱,图像更清晰。
其数值根据设备物理分辨率和屏幕尺寸利用勾股定理计算。公式是(√(像素宽²+像素高²)) ÷ 屏幕尺寸。
iPhone4/iPhone4s的PPI的计算值:
3.iPhone6+的特殊之处:
图片来源:一张图帮你看懂 iPhone 6 Plus 屏幕分辨率
2.逻辑分辨率和物理分辨率
- 物理分辨率:硬件所支持的,显示屏的最佳分辨率;是屏幕实际存在的像素行数乘以列数的数学表达方式。设计的时候用单位px,可以说是物理分辨率尺寸
- 逻辑分辨率:软件可以达到的;设计的时候用单位pt,可以说是逻辑分辨率尺寸
3.iPhone图标适配
在iPhone3GS时代,我们为一个应用提供图标(或按钮提供贴图),因为其scale = 1,所以只需要icon.png。而iPhone4~6 Retina显示屏,因为其scale = 2,需要制作额外的@2x高分辨率版本。
iPhone6+在实际渲染时,downsampling/1.15(1242x2208->1080x1920),准确的讲,应该是@2.46x。而苹果为方便开发者用的是@3x的素材,然后再缩放到@2.46x上。
如果APP要同时兼容iPhone3GS~iPhone6+,则需要icon.png/icon@2x.png/icon@3x.png三种分辨率的图片。
需要注意的是,iOS APP图标的尺寸和命名都需要遵守相关规范。
iPhone image适配 (UIImage 2类初始化方法)
1.+imageNamed:该方法使用系统缓存,适合表视图重复加载图像的情形。同时该API根据UIScreen的scale,自动查找包含对应高倍图后缀名(@2x)的文件,如果没找到设置默认image.scale=1.0。因此,使用该方法,无需特意指定高倍图后缀。在实际运行时,系统如果发现当前设备是Retina屏(scale=2),会自动寻找"*@2x.png"命名格式的图片,加载针对Retina屏的图片素材,否则会失真。
2.+imageWithContentsOfFile/+imageWithData:(scale:)/-initWithContentsOfFile:/-initWithData:(scale:)
这组方法创建的UIImage对象没有使用系统缓存,并且指定文件名必须包含明确的高倍图后缀。如果文件名包含@2x后缀,则image.scale=2.0;否则默认image.scale=1.0,同样对于Retina屏将会失真。
3.目前,适配iPhone6+时,除了一些铺满全屏的大图(LogoIcon、LaunchImage)需提供三倍图,其他的小图仍可沿用原有的二倍图自适应拉伸。