Phone机型 | 屏幕尺寸(inch) | 物理分辨率(pixel) | 逻辑分辨率(point) | 缩放因子 | 芯片 | 显示屏 |
---|---|---|---|---|---|---|
iPhone 12 Pro Max | 6.7 | 1284*2778 | 428*926 | @3x | A14 | 超视网膜 XDR 显示屏 |
iPhone 12 Pro | 6.1 | 1170*2532 | 390*844 | @3x | A14 | 超视网膜 XDR 显示屏 |
iPhone 12 | 6.1 | 1170*2532 | 390*844 | @3x | A14 | 超视网膜 XDR 显示屏 |
iPhone 12 mini | 5.4 | 1080*2340 | 375*812 | @3x | A14 | 超视网膜 XDR 显示屏 |
iPhone 11 Pro Max | 6.5 | 1242*2688 | 414*896 | @3x | A13 | 超视网膜 XDR 显示屏 |
iPhone 11 Pro | 5.8 | 1125*2436 | 375*812 | @3x | A13 | 超视网膜 XDR 显示屏 |
iPhone 11 | 6.1 | 828*1792 | 414*896 | @2x | A13 | Liquid 视网膜高清显示屏 |
iPhone SE(第二代) | 4.7 | 750*1334 | 375*667 | @2x | A13 | 视网膜高清显示屏 |
iPhone XS Max | 6.5 | 1242*2688 | 414*896 | @3x | A12 | 超视网膜高清显示屏 |
iPhone XS | 5.8 | 1225*2436 | 375*812 | @3x | A12 | 超视网膜高清显示屏 |
iPhone XR | 6.1 | 828*1792 | 414*896 | @2x | A12 | Liquid 视网膜高清显示屏 |
iPhone X | 5.8 | 1225*2436 | 375*812 | @3x | A11 | 超视网膜高清显示屏 |
iPhone 8 Plus | 5.5 | 1242*2208 | 414*736 | @3x | A11 | 视网膜高清显示屏 |
iPhone 8 | 4.7 | 750*1334 | 375*667 | @2x | A11 | 视网膜高清显示屏 |
iPhone 7 Plus | 5.5 | 1242*2208 | 414*736 | @3x | A10 | 视网膜高清显示屏 |
iPhone 7 | 4.7 | 750*1334 | 375*667 | @2x | A10 | 视网膜高清显示屏 |
iPhone 6s Plus | 5.5 | 1242*2208 | 414*736 | @3x | A9 | 视网膜高清显示屏 |
iPhone 6s | 4.7 | 750*1334 | 375*667 | @2x | A9 | 视网膜高清显示屏 |
iPhone 6 Plus | 5.5 | 1242*2208 | 414*736 | @3x | A8 | 视网膜高清显示屏 |
iPhone 6 | 4.7 | 750*1334 | 375*667 | @2x | A8 | 视网膜高清显示屏 |
iPhone SE(第一代) | 4 | 640*1136 | 320*568 | @2x | A9 | 视网膜显示屏 |
术语说明
术语 | 说明 | 备注 |
---|---|---|
英寸inch | 1inch = 2.54cm = 25.4mm | |
缩放因子scale factor | 单位长度内的数量比(pixel/point)。物理像素/逻辑像素,也就是我们常说的切图@1x、@2x、@3x; | |
屏幕尺寸 | 显示屏的对角长度 | 单位inch |
物理分辨率 | 是位图图像中的最小单位,也是设计师在PS作图使用的单位。这里的像素可以想象成屏幕上真正用来显示颜色的发光小点。 | 单位是px |
逻辑分辨率 | 虚拟单位,因此也叫虚拟点。在app开发的时候使用的单位。整个屏幕上有多少个物理点。 | 单位是pt |
像素密度 ppi | 表示沿着对角线,每英寸所拥有的像素(pixel)数目,PPI的数值越高,代表显示屏能够以越高的密度显示图像,即通常所说的分辨率越高,颗粒感越弱,图像更清晰、 |
iOS中 对@1x, @2x 和 @3x 的理解
所谓的@1x、@2x、@3x就是屏幕显示模式;也可以理解为一个点等于多少个像素。@2x,就是1个点等于2个像素;同理,@3x,就是1个点等于3个像素。
为什么不只用@3x图呢?
只用@3x图,不同手机加载之后也只会去缩小,不但可以避免因放大而导致的模糊。而且还会引入更少的图片,减少包的大小。这么考虑也是合理,只不过会带来新的问题:
iPhone6加载3倍图时,首先会将3倍图数据加载到内存中,而大多数情况下,@3x图会比@2x图尺寸大一些,会造成一定的内存损耗
iPhone6在将要显示图片的时候,会将图片发送到GPU,GPU会为图片分配计算空间。如果图片大了一些,会消耗过多的GPU计算量
iPhone6加载300px * 300px (px:像素) 的图片后,图片尺寸会变成 150pt x 150pt (pt:点),如果ImageView设定的具体尺寸为100pt x 100pt,那么此时缩放会增加一些计算量
为了避免以上的问题,同时多引入的2种尺寸图片,对ipa包体的大小影响极小,所以还是要引入3种尺寸的图片
网络图如何自动适配@2x 和 @3x?
网络下载的图片,只有一种尺寸, 但是我们项目要求不同型号的iPhone显示图片大小不一样。如何做到适配跟效果图高度一致?
拿到网络图片UIImage后, 设置他的scale 假如你们后台上传的图片都是@3x图,那么X就设置成3, 这样当在@2x 设备上运行的时候,就自动返回 @2x 的图片对象
if let cgImage = image.cgImage {
let _ = UIImage(cgImage: cgImage, scale: 2, orientation: UIImage.Orientation.up)
}