新增AI编程课程,引领技术教育新趋势
iPhoneX的屏幕尺寸分辨率(上图中 高度812 = 2436缩小1/3):
| 设备 | 屏幕尺寸分辨率 | 图片存放对应的位置 |
|---|---|---|
| iPhoneX (1倍 @1x) | 375×812 | @1x |
| iPhoneX (2倍 @2x) | 750×1624 | @2x |
| iPhoneX (3倍 @3x) | 1125×2436 | @3x |
iPhoneX/iPhoneXs/iPhoneXs Max/iPhoneXr的屏幕尺寸分辨率

iPhoneX系列的屏幕分辨率:
| 设备 | 屏幕分辨率 | 图片存放的位置 |
|---|---|---|
| iPhoneX (3倍 @3x) | 1125×2436 | @3x |
| iPhoneXs (3倍 @3x) | 1125×2436 | @3x |
| iPhoneXs Max (3倍 @3x) | 1242×2688 | @3x |
| iPhoneXr (2倍 @2x) | 828×1792 | @2x |
根据以上iPhoneX系列的屏幕分辨率,得出高宽比Ratio都为2.16

橙色整体区域表示我们场景的真实大小, 用 AspectFill来进行缩放后,scene.scaleMode = .aspectFill,黑色线框内的区域表示场景展示在设备上的真实大小(即屏幕可视范围)。
iPad Retina:橙色区域和黑色线框内的区域是完美吻合的,也就是说在设备上能完整显示。
iPhone6/7/8/Plus:黑色线框内的区域是2048 * 1152,这边要注意的是,超出黑色框的内容看不见,设计游戏时,尽量不要把精灵的Position位置放在位于不可见的区域。
iPhoneX:黑色线框内的区域是2048 * 948(兰色为安全区域),其中948高度=2048 / 2.16(高宽比)。
不同尺寸的iPhone的屏幕尺寸比例及屏幕高宽比值
| 设备 | 屏幕比例 | 屏幕高宽比值 |
|---|---|---|
| iPad Retina | 4 / 3 | 1.33 |
| iPhone 6/7/8 | 16 / 9 | 1.77 |
| iPhone 6/7/8 Plus | 16 / 9 | 1.77 |
| iPhone X/Xs/Xr/Xs Max | — | 2.16 |
再者我们主要是适配SpriteKit游戏开发,因为不需要计算Navigation导航栏的高度,也不需要TabBar状态栏的高度,只需要计算可视区域(屏幕可视范围),还有,注意要把需要交互的元素放在安全区域SafeArea,而不要放在危险区域 Danger Area就行了。
可视区域(屏幕可视范围)= 安全区域 Safe Area + 危险区域 Danger Area
了解了原理后,我们就开始来编写代码吧。
1.extension拓展UIDevice,判断设备是iPhone或者iPhoneX系列或iPad
import UIKit import SpriteKit // iPhone X 375*812(H) @1x