如何在iPhoneX安全区(SafeArea)内适配游戏?老游戏如果全屏的话会被遮挡!
之前看了这个https://github.com/cocos2d/cocos2d-x/pull/18276解决方案,现在游戏能全屏了,但是试用SafeArea对游戏界面没有效果。咨询大神cocos2d-x游戏如何实现SafeArea适配!
关注。。最好官方能适配下。。
帮不上忙,只是吐槽一下,苹果是不是他妈的抽风了,所有应用,软件最好都不兼容iPhoneX,让他卖不出去。
关注下
马赛克,马赛克
改内部节点的wiget 的左右上下相距边界的间距,就可以了,可能还需要美工修图,将UI边界线外补图,额,要判断一下是否为iphoneX,是,采取改wiget的left…等值
这是多大的怨气。。。
感觉最好不要用安全区适配两边留黑。
全面屏的意义就是不留黑边,所以app应该保证全屏显示。
参考苹果开发者官网指导
https://developer.apple.com/ios/update-apps-for-iphone-x/
-
业务层判断是否为iPhone X,是则对交互组件做如按钮、输入框) 上下左右约束布局。
-
UI、场景背景可以设计成全屏,交互性的组件(如按钮、输入框)建议设约束值
- top : 44.0
- left : 21.0
- bottom : 34.0
- right : 21.0
-
如果是creator项目,适配应该会很省很多时间。
-
买不到真机可以用xcode模拟器跑下每一个UI界面
如果是已有的项目,资源很多,一时无法重新制作相关背景图和动画的话,是无法在iphoneX上全屏幕显示的
Creator PR:
https://github.com/cocos-creator/cocos2d-x-lite/pull/1008
Cocos2D-X PR:
https://github.com/cocos2d/cocos2d-x/pull/18489
使用方法:
JS:
var safeArea = cc.director.getSafeAreaRect();
CPP:
Rect safeArea = cocos2d::Director::getInstance()->getSafeAreaRect();
安全区域只是个区域,不会修改你原来游戏的全屏适配方式。
保证UI元素在SafeArea内即可。即UI布局要依据safe area。
为啥我拿到的framesize 是 2001x1125
加iphoneX的启动图
启动图用默认的2208*1242大小就可以的
你好 dumganhar. 我cherry-pick 之后发现 js绑定没有。 怎么弄?
你需要重新运行一下自动绑定生成工具:https://github.com/cocos2d/cocos2d-x/blob/v3/tools/tojs/README.mdown
或者你直接拷贝一下:
https://github.com/cocos2d/cocos2d-x/blob/v3/cocos/scripting/js-bindings/auto/jsb_cocos2dx_auto.cpp
中 getSafeArea 相关的绑定代码。