iPhone X的适配分为两种(本文主要说明第二种方法)
1.游戏中UI的自适配,即根据设备代码调整部分UI 的位置。这样的效果是最好的,游戏能填充整个手机屏幕
2.另外一种是不修改现有的游戏UI代码,通过修改绘制区域,使屏幕刘海和底部都黑边填充来适配
#1 .Xcode 配置启动页
cocos 创建的工程在用xcode 打包IPA 时很多时候是使用Launch Images Source 配置启动页面来适配屏幕。这里我使用配置 Launch Screen File 的方式来做屏幕的适配,使应用能全屏显示。(你可以尝试不使用启动页了解效果差距)
#2 .代码修改绘制区域
iOS 11.0之后系统新增安全区域变化方法,通过安全区域变化来改变视图的位置
UIViewController中新增:- (void)viewSafeAreaInsetsDidChange;
UIView中新增:- (void)viewSafeAreaInsetsDidChange;
在 RootViewController.mm 文件中加入以下代码,至于黑边的宽度可根据需要修改(这里的参数是我们游戏需要所以才这样配置)。
#3. 个性化的黑边区域(可选的操作)
现实中难免会有策划说黑边好难看和游戏不搭,要换成游戏UI底图类似的要求。这样的话需要在 AppDelegate.mm 中的- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 添加对应的图片(实际上就是添加一个原生的控件,正常来说是个 UIImage, 这里只做个示范)
参考#4. cocos 的UI适配模式修改
到上面为止实际上iPhoneX 已经能适配(游戏中实际能绘制的区域已经满足适配),不过有些时候在一开始会修改 cocos中的适配方式,设置成FIX_WIDTH 或者SHOW_ALL , 所以在完成上面的原生平台的适配后还需要修改 coco中的适配(否则会出现coco适配后又留出黑边的情况)。所以在iPhone X的设备上需要修改适配方式为 EXACT_FIT
参考#5. 由于适配导致cocos EditBox 控件功能异常
cocos 在 CCEAGLView-ios 中针对 EditBox 键盘唤起、隐藏操作的同时对UI做了移动操作,适配之后使用EditBox 唤起键盘后会发现黑边全部在一侧,适配遭到了破坏。对此可以在CCEAGLView-ios的 doAnimationWhenKeyboardMoveWithDuration 方法中对 frame 的操作,针对iphoneX设备再进一步的处理
网友评论