求解, 当我手动设置了 canvas的高宽, 和 container 的高宽之后, 我可以实现在ios有地址栏的情况下全屏展示内容了。

cc.game.container.style.height = window.innerHeight + ‘px’;
cc.game.container.style.width = window.innerWidth + ‘px’;
cc.game.canvas.style.height = window.innerHeight + ‘px’;
cc.game.canvas.style.width = window.innerWidth + ‘px’;

这个是我用的方法, 地址栏出来的时候, 手动设置视窗大小, 我自己发现了, 也在论坛里看到人用。 但是有一个问题,就是这个时候我的界面 和底部的一些按钮是好的,但是靠近顶部的按钮位置偏移了。 也就是向上便宜。

因为正常来说, 地址栏出现, 界面适配计算宽高的时候没有把地址栏算进去的,界面的一部分会被地址栏遮住。 而我是强行往下缩放。所以能把界面内容全部放在地址栏下的区域, 等于是带着地址栏全屏了。 但是我的按钮都偏移了, 显示的地方比实际可点击的区域低了一点。 有没有办法解决这个便宜, 我可以按照新的我给的宽高再适配一次吗, 如果能解决这个问题, 就能解决 ios13, safari浏览器适配的全部问题了。 到时候一定分享代码。

比如 iponexs mas, 尺寸是 896 * 414 = 2688 * 1242,但是地址栏出现的时候, 变成了 896364 =2688 * 1092. 我可以把视窗强制移动到 896364 =2688 * 1092 这个区域内, 并且主场景,场景内的图片显示没有变形和偏移。 但是 按钮偏移了。 我想应该子节点和预制体按照 896 * 414 = 2688 * 1242 这个尺寸去适配了。 它只能算到这里。 算不到我给的 区域。 所以一部分上面的按钮是偏移了,或者说很多预制体的整个区域偏移了。 我用了widget, 基本上都有。 但是这个问题任然无可避免。

cc.game.container.style.height = window.innerHeight + ‘px’;
cc.game.container.style.width = window.innerWidth + ‘px’;
cc.game.canvas.style.height = window.innerHeight + ‘px’;
cc.game.canvas.style.width = window.innerWidth + ‘px’;

var t = window.innerWidth / canvas.designResolution.width
var n = window.innerHeight / canvas.designResolution.height;

t < n
     ? (canvas.fitWidth = !0, canvas.fitHeight = !1) : n < t
   ? (canvas.fitWidth = !1, canvas.fitHeight = !0) : (canvas.fitWidth = !1, canvas.fitHeight = !1)

代码是这样, 先设计区域,然后按照区域去调整宽高。 我想可能要去研究底层的代码, canvas。fitheight 或者canvas fitwidth 这两个适配是怎么实现的了。 我简单看了一下, 不能很通透。 我觉得肯定是因为这个地方适配是按照了固定的尺寸,而不是我临时变更的尺寸去适配。 或者是按照我的尺寸适配了, 毕竟图片没有偏移, 但是 子节点和预制体的在适配的时候出现了偏移

这有有没有办法解决

你的问题是什么,如果你是想要让 web端适配ios 13 那么官方已经解决了