uniapp获取手机状态栏和头部导航栏高度(可用于制作头部自定义导航栏)

statusBar ---------- 状态栏高度
customBar -------- 状态栏高度 + 导航栏高度

1、建议在公共位置使用该段代码,以达到可以全局复用的效果。
这里我们存在store中,存在store中有个好处,就是能够实时变化。
避免uni.getSystemInfo()执行未完成时就渲染高度,而在uni.getSystemInfo()完成后无法实时变换高度。

2、这里又存在一个问题,直接使用this.$store.state.statusBar设置在布局标签上有时会不生效。
解决方法:
重新赋值给该页面自定义的变量,然后设置到布局标签上则能够成功。

话不多说直接上代码

uni.getSystemInfo({
    success: (e: any) => {
      // this.compareVersion(e.SDKVersion, '2.5.0')
      let statusBar = 0
      let customBar = 0]
      
      
      // #ifdef MP
      statusBar = e.statusBarHeight
      customBar = e.statusBarHeight + 45
      if (e.platform === 'android') {
        this.$store.commit('SET_SYSTEM_IOSANDROID', false)
        customBar = e.statusBarHeight + 50
      }
      // #endif
      
      
      // #ifdef MP-WEIXIN
      statusBar = e.statusBarHeight
      // @ts-ignore
      const custom = wx.getMenuButtonBoundingClientRect()
      customBar = custom.bottom + custom.top - e.statusBarHeight
      // #endif


      // #ifdef MP-ALIPAY
      statusBar = e.statusBarHeight
      customBar = e.statusBarHeight + e.titleBarHeight
      // #endif


      // #ifdef APP-PLUS
      console.log('app-plus', e)
      statusBar = e.statusBarHeight
      customBar = e.statusBarHeight + 45
      // #endif


      // #ifdef H5
      statusBar = 0
      customBar = e.statusBarHeight + 45
      // #endif

	// 这里你可以自己决定存放方式,建议放在store中,因为store是实时变化的
      this.$store.commit('SET_STATUS_BAR', statusBar)
      this.$store.commit('SET_CUSTOM_BAR', customBar)
      this.$store.commit('SET_SYSTEM_INFO', e)
    }
})

注:只有小程序能够获得导航栏高度,app、H5是没有的,所以高度这两端的导航栏高度是设置的45px

  • 15
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
UniApp是一个跨平台的开发框架,可以用于同时开发iOS、Android和Web应用。在UniApp中,可以通过自定义头部导航栏来实现个性化的界面设计。 要自定义UniApp头部导航栏,可以按照以下步骤进行操作: 1. 在pages.json文件中配置导航栏样式: 在pages.json文件中,可以为每个页面配置导航栏的样式。可以设置导航栏的背景色、文字颜色、标题等属性。例如: ```json { "pages": [ { "path": "pages/index/index", "style": { "navigationBarTitleText": "首页", "navigationBarBackgroundColor": "#ffffff", "navigationBarTextStyle": "black" } } ] } ``` 2. 在页面中使用自定义导航栏组件: 在页面的vue文件中,可以使用自定义导航栏组件来替代默认的导航栏。可以在组件中定义导航栏的样式和布局。例如: ```html <template> <view> <custom-navbar title="首页" background-color="#ffffff" text-color="black"></custom-navbar> <!-- 页面内容 --> </view> </template> <script> export default { components: { 'custom-navbar': '@/components/CustomNavbar' // 自定义导航栏组件的路径 } } </script> ``` 3. 创建自定义导航栏组件: 在components文件夹下创建CustomNavbar.vue文件,编写自定义导航栏组件的样式和布局。可以使用uni-app提供的组件和样式来实现个性化的导航栏设计。例如: ```html <template> <view class="navbar" :style="{ backgroundColor: backgroundColor, color: textColor }"> <text class="title">{{ title }}</text> </view> </template> <script> export default { props: { title: { type: String, default: '' }, backgroundColor: { type: String, default: '#ffffff' }, textColor: { type: String, default: 'black' } } } </script> <style> .navbar { height: 44px; display: flex; align-items: center; justify-content: center; } .title { font-size: 18px; font-weight: bold; } </style> ``` 以上就是自定义UniApp头部导航栏的基本步骤。通过配置pages.json文件和创建自定义导航栏组件,可以实现个性化的导航栏设计。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值