研究了5个小时的iPhoneX适配。 从catalog,storyboard,safearea等一系列文章中发现。
如果我们想完全撑满全屏。那直接建一个storyboard就好了。
但撑满全屏后,流海就是一个恶心的问题。
思索半天后,我们发现,其实我们想要的。并不是撑满。 而是要去除留海部分。
那有没有一种办法,干脆就让我们的iPhoneX达到和iPhone6一样的显示效果呢。 或许这才是我们想要的。 下面的代码,放入每一个场景的onLoad中,靠热更新,就能支持iPhoneX了,效果不要不要的。(思路就是,iPhoneX下面,用ShowAll)
if(cc.sys.isNative && cc.sys.platform == cc.sys.IPHONE){
var size = cc.view.getFrameSize();
var isIphoneX = (size.width == 2436 && size.height == 1125)
||(size.width == 1125 && size.height == 2436);
if(isIphoneX){
var cvs = this.node.getComponent(cc.Canvas);
cvs.fitHeight = true;
cvs.fitWidth = true;
}
}
总结一下步骤
1、新建一个Laucn Screen.storyboard
2、删除所有View下面的内容,SafeArea也要去掉
3、General里面,使用这个Launch Screen作为加载屏
这里想要达到最好的效果,还有设计分辨率有关。
比较推荐的是 1280 x 640. 在其他设备上,默认使用 定宽策略。 也就是说,高度上做自适应。 背景图做成 1280 x 960 就可以适配到iPad了。 (如果之前用的是1280 x 720的设计分辨率,也不打紧。勉强可以用)。
1280 x 640的设计分辨率,见下图。
之前为了适配ipad也是用的这招!只不过上下会有黑边,但游戏内容一览无余。
let isNotFit = cc.winSize.width / cc.winSize.height <= 1.65;
let canvas = this.node.getComponent(cc.Canvas);
if (isNotFit) {
canvas.fitHeight = true;
canvas.fitWidth = true;
}