lingxiaoyi / navigation-bar

微信小程序自定义导航栏组件,navigation,完美适配全部手机
MIT License
763 stars 140 forks source link

iPhone 6s机型导航栏渲染不出来 #13

Open weixisheng opened 4 years ago

weixisheng commented 4 years ago

在iPhone 6s部分机型下,偶现导航栏渲染不出来或者高度为0的情况,导致下边布局顶上去了。 微信截图_20191028100316

lingxiaoyi commented 4 years ago

你试一下是不是微信版本问题

lingxiaoyi commented 4 years ago

你也可以测试下我例子的demo会不会也出现这种情况

weixisheng commented 4 years ago

应该是ios第一次渲染拿不到高度值

lingxiaoyi commented 4 years ago

我这里的iphone6s没出现这种情况的

weixisheng commented 4 years ago

是的,绝大部分手机都是正常的。不过手机那么多,难保出厂时没有一些问题,可以忽略。 昨天在客户的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;
  }
lingxiaoyi commented 4 years ago

主要是我测那那么多款手机没见过这个问题 所有我就没采取默认值的策略 如果你用我的demo在线这个问题 你可以告诉我手机型号 版本 微信版本信息 我可以优化添加默认值

xmsz commented 4 years ago

这个问题存在估计都好几辈子了... 是个已知问题,ios特定机型或者情况下获取不到胶囊高度,需要延迟获取。所以目前做法还是固定写死...

lingxiaoyi commented 4 years ago

因为我也反反复复测试了几十款手机并没有出现获取不到的情况,如您遇到胶囊信息获取为空的情况,请回复给我手机型号 微信版本 小程序依赖库版本号.解决方案其实也不难,获取不到的话可以加个默认值,如果只有苹果手机出现这个问题的话,那就更简单了,苹果手机上下间隙值固定为4*2,写死就行

lingxiaoyi commented 4 years ago

对于getMenuButtonBoundingClientRect 胶囊按钮信息获取不到或者此方法报错问题已修复,获取不到就设置默认值的解决方案