iOS开发干货-屏幕适配

1、iphone尺寸

设备iPhone 对角线 Diagonal 逻辑分辨率(point) Scale Factor 设备分辨率(pixel)
3GS 3.5-inch 320x480 @1x 320x480
4(s) 3.5-inch 320x480 @2x 640x960
5c 4-inch 320x568 @2x 640x1136
5(s) 4-inch 320x568 @2x 640x1136
6 4.7-inch 375x667 @2x 750x1334
6+ 5.5-inch 414x736 @3x 1080x1920
7 4.7-inch 375x667 @2x 750x1334
7+ 5.5-inch 414x736 @3x 1080x1920

2、名词解释

  • 宽高(width/height):手机的物理尺寸,包括显示屏和边框。
  • 屏幕尺寸:通常所说的iPhone5屏幕尺寸为4英寸、iPhone6屏幕尺寸为4.7英寸,指的是显示屏对角线的长度(diagonal)。
  • 像素密度PPI(Pixel Per Inch by diagonal):表示沿着对角线,每英寸所拥有的像素(Pixel)数目。注意:PPI数值越高,代表显示屏能够以越高的密度显示图像,即通常所说的分辨率越高、颗粒感越弱。

3、示意图

iOS开发干货-屏幕适配_第1张图片

4、@2X 和@3X适配问题

@2X

  • iPhone3GS时代,我们为一个应用提供图标(或按钮提供贴图),只需要icon.png。针对现在的iPhone4~6 Retina显示屏,需要制作额外的@2x高分辨率版本。
  • 例如在iPhone3GS中,scale=1,用的图标是50x50pixel(logicalimage.size=50x50point);在iPhone4~6中,scale=2,则需要100×100pixel(logical image.size=50x50point,乘以image.scale=dimensions in pixels),并且命名为[email protected]
  • 如果APP要同时兼容iPhone3GS~iPhone6,则需要提供icon.png/[email protected]两种分辨率的图片。

@3x

  • iPhone6+在实际渲染时,downsampling/1.15(1242x2208->1080x1920),准确的讲,应该是@2.46x。苹果为方便开发者用的是@3x的素材,然后再缩放到@2.46x上。
    参考:为什么 iPhone 6 Plus 要将 3x 渲染的 2208x1242 分辨率缩小到 1080p 屏幕上?
    iPhone 6 Plus屏幕分辨率

5、iOS UIImage 加载图片方式

  • imageNamed:该方法使用系统缓存,适合表视图重复加载图像的情形。同时该API根据UIScreen的scale,自动查找包含对应高倍图后缀名(@2x)的文件,如果找到二倍图,则image.scale=2.0,对应逻辑size大小以point度量(pixel度量的一半);如果没找到设置默认image.scale=1.0,对应逻辑size大小同像素尺寸。因此,使用该方法,无需特意指定高倍图后缀。在实际运行时,系统如果发现当前设备是Retina屏(scale=2),会自动寻找"*@2x.png"命名格式的图片,加载针对Retina屏的图片素材,否则会失真。

  • imageWithContentsOfFile/imageWithData/initWithContentsOfFile/initWithData:这组方法创建的UIImage对象没有使用系统缓存,并且指定文件名必须包含明确的高倍图后缀。如果文件名包含@2x后缀,则image.scale=2.0;否则默认image.scale=1.0,同样对于Retina屏将会失真。

  • 目前,适配iPhone6+时,除了一些铺满全屏的大图(LogoIcon、LaunchImage)需提供三倍图,其他的小图仍可沿用原有的二倍图自适应拉伸。
    对于iPhone3、4/5/6、6+三类机型,需要按分辨率提供相应的高倍图并且文件名添加相应后缀,否则会拉伸(stretchable/resizable)失真(模糊或边角出现锯齿)

你可能感兴趣的:(iOS开发干货-屏幕适配)