navigation-bar
navigation-bar copied to clipboard
iPhone 6s机型导航栏渲染不出来
在iPhone 6s部分机型下,偶现导航栏渲染不出来或者高度为0的情况,导致下边布局顶上去了。
你试一下是不是微信版本问题
你也可以测试下我例子的demo会不会也出现这种情况
应该是ios第一次渲染拿不到高度值
我这里的iphone6s没出现这种情况的
是的,绝大部分手机都是正常的。不过手机那么多,难保出厂时没有一些问题,可以忽略。 昨天在客户的iPhone XS Max重现出来了,导航栏紧接着就是一个绝对定位的背景图,因为需要覆盖导航栏。
<nav-bar background="transparent"></nav-bar>
<view class="ad" style="padding-top: {{navbarTop}}"></view>
data = {
navbarTop: '64px'
}
onShow() {
let t = wx.getStorageSync('systemInfo')
if (t) {
this.navbarTop = (t.screenTop || t.navbarTop) + 4 + 'px'
}
}
.ad {
position: absolute;
top: 0;
right: 0;
left: 0;
}
- 方案一 如上,就是给个默认值,但是切换页面之后抖动,再次回来就会正常
- 方案二 onShow里面不取缓存,重新获取系统信息
主要是我测那那么多款手机没见过这个问题 所有我就没采取默认值的策略 如果你用我的demo在线这个问题 你可以告诉我手机型号 版本 微信版本信息 我可以优化添加默认值
这个问题存在估计都好几辈子了... 是个已知问题,ios特定机型或者情况下获取不到胶囊高度,需要延迟获取。所以目前做法还是固定写死...
因为我也反反复复测试了几十款手机并没有出现获取不到的情况,如您遇到胶囊信息获取为空的情况,请回复给我手机型号 微信版本 小程序依赖库版本号.解决方案其实也不难,获取不到的话可以加个默认值,如果只有苹果手机出现这个问题的话,那就更简单了,苹果手机上下间隙值固定为4*2,写死就行
对于getMenuButtonBoundingClientRect 胶囊按钮信息获取不到或者此方法报错问题已修复,获取不到就设置默认值的解决方案