最新的iPhone 各种机型尺寸信息列表(含iPhone 7/8、iPhoneX、iPhone XR、iPhone XS Max)

1. iPhone 各种机型尺寸信息列表入下表:

 

机型 尺寸 逻辑缩放因子
(UIKit Scale factor)
实际缩放因子
(Native Scale factor)
屏幕宽高 屏幕分辨率
3GS 3.5寸 1.0 1.0 320x480 320x480
4(S) 3.5寸 2.0 2.0 320x480 640x960
5(C)/5(S)/SE 4寸 2.0 2.0 320x568 640x1136
6(S)/7/8 4.7寸 2.0 2.0 375x667 750x1334
6(S)+/7+/8+ 5.5寸 3.0 2.608 414x736 1080x1920
X/XS 5.8寸 3.0 3.0 375x812 1125x2436
XR 6.1寸 2.0 2.0 414×896 828 x1792
XS Max 6.5寸 3.0 3.0 414×896 1242x2688

 

需要注意的地方是,6(S)+/7+/8+的时候,实际的缩放因子并不等于逻辑上的缩放因子。所以,他的屏幕分辨率是1080x1920而不是1242x2208。

上述数据,可以通过代码获得。获取逻辑缩放因子、逻辑屏幕宽度;实际缩放/物理因子、实际/物理屏幕宽度的方式:

//逻辑缩放因子
[UIScreen mainScreen].scale

//逻辑屏幕宽度
[UIScreen mainScreen].bounds


//实际/物理缩放因子
[UIScreen mainScreen].nativeScale

//实际/物理屏幕宽度
[UIScreen mainScreen].nativeBounds

        iOS里面对于缩放因子有2个不同的概念。一个是其实际的缩放因子(Native Scale factor),一个是UIKit上所表示的逻辑缩放因子(UIKit Scale factor)。UIKit Scale factor和Native Scale factor不相等的时候,系统会先使用逻辑上的factor(即UIKit Scale factor)来渲染,渲染之后再把结果进行缩放,使之符合Native Scale factor下渲染的样子。在一些UI渲染计算量大的应用(如游戏),这类多余的渲染是很耗费资源的,应该在渲染这类UI的时候指定使用Native Scale factor来做渲染。MetalKit(新的系统接口,支持GPU加速3D绘图的API。)里面有这个用法。详情见官网

参考:《为什么 iPhone 6 Plus 要将 3x 渲染的 2208x1242 分辨率缩小到 1080p 屏幕上?》

2. 手机机型区分

       由于现在iPhone 6、iPhone 7、iPhone 8屏幕尺寸一样,他们的Plus版也是一样的。所以按照以前的以屏幕高度来区分的方法,结果会有可能重叠。

      (1)以屏幕高度的不同来区分

 

#define iPhone_4 ((int)[UIScreen mainScreen].bounds.size.height == 480)

 

#define iPhone_5 ((int)[UIScreen mainScreen].bounds.size.height == 568)

 

#define iPhone_6 ((int)[UIScreen mainScreen].bounds.size.height == 667) //6、7、8

 

#define iPhone_6p ((int)[UIScreen mainScreen].bounds.size.height ==736)//6p、7p、8p

 

#define iPhone_X  ((int)[UIScreen mainScreen].bounds.size.height ==812)

  

          

 

 

你可能感兴趣的:(经验总结)