小程序
小游戏
企业微信
微信支付
扫描小程序码分享
获取小程序右上角菜单按钮信息偶尔结果为0,导致无法正确的设置自定义导航栏的高度
1 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
解决了
延迟500ms执行
但还是希望官方能直接解决这个问题
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
uni.getSystemInfo({
success: res => {
//导航高度
let menuButtonInfo = {}
if (res.platform === 'ios') {
// ios设备的胶囊按钮都是固定的
menuButtonInfo = {
width: 87,
height: 32,
left: res.screenWidth - 7 - 87,
right: res.screenWidth - 7,
top: res.statusBarHeight + 4,
bottom: res.statusBarHeight + 4 + 32
}
} else {
// 安卓通过api获取
menuButtonInfo = uni.getMenuButtonBoundingClientRect()
this.setMenuButtonInfo(menuButtonInfo)
console.log('获取胶囊信息:', menuButtonInfo);
// 导航栏高度 = 状态栏到胶囊的间距(胶囊距上未知-状态栏高度)* 2 + 胶囊高度 + 状态栏高度
this.$options.globalData.navHeight = (menuButtonInfo.top - res.statusBarHeight) * 2 + menuButtonInfo.height + res.statusBarHeight;
console.log('navHeight:', this.$options.globalData.navHeight);
this.$options.globalData.menuBottom = menuButtonInfo.top - res.statusBarHeight;
},
fail(err) {}
})
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
解决了
延迟500ms执行
但还是希望官方能直接解决这个问题
width: 87
height: 32
按钮的上下边距是4,右边到屏幕边缘的距离是7
所以我放弃使用延时执行。只在安卓端调用getMenuButtonBoundingClientRect()
uni.getSystemInfo({
success: res => {
//导航高度
let menuButtonInfo = {}
if (res.platform === 'ios') {
// ios设备的胶囊按钮都是固定的
menuButtonInfo = {
width: 87,
height: 32,
left: res.screenWidth - 7 - 87,
right: res.screenWidth - 7,
top: res.statusBarHeight + 4,
bottom: res.statusBarHeight + 4 + 32
}
} else {
// 安卓通过api获取
menuButtonInfo = uni.getMenuButtonBoundingClientRect()
}
this.setMenuButtonInfo(menuButtonInfo)
console.log('获取胶囊信息:', menuButtonInfo);
// 导航栏高度 = 状态栏到胶囊的间距(胶囊距上未知-状态栏高度)* 2 + 胶囊高度 + 状态栏高度
this.$options.globalData.navHeight = (menuButtonInfo.top - res.statusBarHeight) * 2 + menuButtonInfo.height + res.statusBarHeight;
console.log('navHeight:', this.$options.globalData.navHeight);
this.$options.globalData.menuBottom = menuButtonInfo.top - res.statusBarHeight;
},
fail(err) {}
})