1. iPhone 各种机型尺寸信息列表入下表:
分辨率缩放因子①(Native Scale factor)
显示宽高缩放因子②(UIKit Scale factor)
机型 | 尺寸 | 屏幕分辨率 | 屏幕显示宽高 |
---|---|---|---|
iPhone Xs MAX | 6.5 | 1242x2688 | 414x896 |
iPhone XR | 6.1 | 828x1792 | 414x896 |
iPhone X/Xs | 5.8 | 1125x2436 | 375x812 |
iPhone 7/8 Plus | 5.5 | 1080x1920 | 414x736 |
iPhone 6/6s Plus | 5.5 | 1080x1920 | 375x667 |
iPhone 6/6s/7/8 | 4.7 | 750x1334 | 375x667 |
iPhone SE | 4 | 640x1136 | 320x568 |
iPad Pro 12.9-inch (2nd generation) | 12.9 | 2048x2732 | 1024x1366 |
iPad Pro 10.5-inch | 10.5 | 2224x1668 | 1112x834 |
iPad Pro (12.9-inch) | 12.9 | 2048x2732 | 1024x1366 |
iPad Pro (9.7-inch) | 9.7 | 1536x2048 | 768x1024 |
iPad Air 2 | 1536x2048 | 768x1024 | |
iPad Mini 4 | 1536x2048 | 768x1024 |
需要注意的地方是,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。)里面有这个用法。详情见官网。
2. 手机机型区分
由于现在iPhone 6、iPhone 7、iPhone 8屏幕尺寸一样,他们的Plus版也是一样的。所以按照以前的以屏幕高度来区分的方法,结果会有可能重叠。
以屏幕高度的不同来区分
#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)
评论关闭