08-29 目前的解决方法:
在App启动后到获取第一个页面最外层view大小,和 uni.getSystemInfoSync()
获取到的 windowHeight
进行对比。如果不相等,说明问题出现了,然后调用plus.runtime.restart()
重启应用,一般重启后布局就正常了。
appCheckLayout () {
let self = this
let query = uni.createSelectorQuery()
query.select('.container').boundingClientRect()
query.exec(function(res) {
console.log('appCheckLayout', JSON.stringify(res))
if (res && res.length > 0) {
if (res[0].height !== self.sys.windowHeight) {
console.log(`*** uniapp app height bug *** ${res[0].height} != ${self.sys.windowHeight}`)
plus.runtime.restart()
}
}
})
},
我大概测试了10次,截取到一次异常,运行log如下:
14:27:13.685 appCheckLayout, [{"bottom":647,"height":647,"id":"","width":375,"left":0,"dataset":{},"right":375,"top":0}] at pages/index/main.vue:64
14:27:13.707 *** uniapp app height bug *** 647 != 667 at pages/index/main.vue:67
可以看出和我之前的猜测一致,下面的留白相差一个状态栏的高度20
。
还是希望官方能解决,这种问题,相关代码review一两遍基本就知道啥问题了,或者希望官方还是能够开源这部分代码,这样我们还能帮忙找一找。
===========================================================
HBuilderX
版本号:2.2.2.20190816
最近几个版本都有这个问题。一般重启App就好了。
点击下面的图片可以看到最下面的白条。截图手机型号iPhone 8P iOS 12.4
试了下,低端手机出现的概率比较大。大概量了一下,白条高度和状态栏一样。可能是这里的计算有问题。
s***@qq.com (作者)
小概率出现,从测试的情况来看,和webview加载的内容没有关系,iPhone 5.5出现个概率大一些。iPhone X后面的没出现过。出问题后,一般重启App后就能解决。
Android测试没有出现过。页面代码都是同一套,所以我这里推断出和页面html代码没关系,应该是iOS系统布局webview控件的时候出的问题。
空白条高度感觉正好是一个状态栏的高度。
2019-08-28 14:54
s***@qq.com (作者)
我们这边又有测试人员反馈了,感觉低端手机明显一点。iPhone 8以上的型号没有出现过,麻烦看一下,谢谢!
2019-08-29 12:11
DCloud_IOS_XTY
回复 s***@qq.com: 请提供下复现问题的demo
2019-08-29 12:44
s***@qq.com (作者)
回复 DCloud_IOS_XTY: 官方的demo就可以啊,只是需要在真机上面反复测试。我建议你们检查一下代码,特别是webview计算那边,是不是有可能漏掉状态栏高度?
2019-08-29 13:01
s***@qq.com (作者)
回复 DCloud_IOS_XTY: 找到一个不完美的解决方案,上面的帖子更新了。还是希望官方能看下,谢谢~
2019-08-29 14:38
j***@163.com
回复 s***@qq.com: 我也遇到这问题了,解决了没有?
2019-10-28 10:28
s***@qq.com (作者)
回复 j***@163.com: 最近好像出现的概率低了
2019-11-21 16:17
DCloud_IOS_XTY
回复 s***@qq.com:按照这个帖子 https://ask.dcloud.net.cn/question/79091可以解决问题吗
2019-11-21 17:35