适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域

 此篇文章是对上一篇文章(

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 

                    
                
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信