收藏
回答

screenTop===statusBarHeight+navBarHeight

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug getSystemInfo 微信iOS客户端 8.0.2 2.15.0

https://developers.weixin.qq.com/miniprogram/dev/api/base/system/system-info/wx.getSystemInfo.html

iphone se最新版

statusBarHeight = 20

capsule.height = 24

为何screenTop高度为64,通过胶囊区域计算出来的导航栏和状态栏高度之和却为60,应该以哪个为准呢?

以下计算状态栏和导航栏的高度之和的方式对吗?


const capsule = wx.getMenuButtonBoundingClientRect();

const systemInfo = wx.getSystemInfoSync();

const { statusBarHeight,safeArea, } = systemInfo || {};

    

    // 胶囊(系统默认退出按钮)距离状态栏顶部的距离

    const { top:capsuleTop, height:capsuleHeight } = capsule;

    // 胶囊(垂直居中)的上下间距

    const capsuleVerticalSpace = (capsuleTop - statusBarHeight) * 2;

   // 导航栏高度 = 胶囊高度和垂直居中间距相机

const navBarHeight = capsuleHeight + capsuleVerticalSpace;

    // 状态栏和导航栏总高度

    const statusNavBarHeight = statusBarHeight + navBarHeight;

    // 内容区域高度: 不包含状态栏和导航栏

    const { height:contentHeight } = safeArea || {};

    console.log(systemInfo,'systemInfo');

  console.log(capsule,'胶囊信息');

    const extendSystemInfo = { ...systemInfo,statusNavBarHeight,navBarHeight,capsule,contentHeight }

 


最后一次编辑于  2021-02-23
回答关注问题邀请回答
收藏

2 个回答

  • 社恐的王同学
    社恐的王同学
    2021-02-23

    胶囊top 减去 状态栏高度 等于胶囊与状态栏之间的距离

    此时胶囊bottom 加上 胶囊与状态栏之间的距离 此时整个高度为nav高度

    此时保留状态栏高度,剩余高度为nav文字显示内容区域高度,这样保证的胶囊在nav文字显示内容区域处于正中间

    2021-02-23
    有用 3
    回复 1
    • 寸许月光
      寸许月光
      2021-02-23
      谢谢,这个有用哦
      2021-02-23
      回复
  • 少侠
    少侠
    2021-02-23

    可以给你看下我们的计算方式,入参 componentHeight是组件到状态栏的距离,最好缓存下wx.getSystemInfoSync 和 wx.getMenuButtonBoundingClientRect 两个api的结果,防止频繁调用

    export const getNavigationBarTop = (componentHeight = 0) => {
      const systemInfo = wx.getSystemInfoSync()
      const screenFixRatio = 750 / systemInfo.windowWidth
      const { height, top } = wx.getMenuButtonBoundingClientRect()
    
    
      return (top + height / 2) - (componentHeight / 2 / screenFixRatio)
    }
    
    2021-02-23
    有用 1
    回复 1
    • 寸许月光
      寸许月光
      2021-02-23
      算出来还是60,很好奇那个screenTop = 64是怎么来的
      2021-02-23
      回复
登录 后发表内容
问题标签