实现过程
1.隐藏掉默认导航栏,app.json
中的window
配置
"window":{ |
2.自定义导航栏组件
导航栏构成主要有顶部的手机状态栏statusBar
和标题栏titleBar
构成
***.wxml
|
***.js
properties: { |
由于分享的页面打开后,拿不到页面的路由栈,此种情况主要是为了适配某个详情页面分享后,打开的页面不显示返回按钮使用attached(){
let pages = getCurrentPages();
let isShowBakcBtn = true;
if (pages.length === 1) {
isShowBakcBtn = false
}
...
}
计算statusBar
和titleBar
高度attached(){
...
const res = wx.getSystemInfoSync();
const statusBarHeight = res.statusBarHeight;
const custom = wx.getMenuButtonBoundingClientRect();
titleBarHeight = Math.floor(custom.bottom + custom.top - (statusBarHeight * 2));
...
}
注意,因为getMenuButtonBoundingClientRect
方法之前有BUG,在iOS设备上拿不到数据,所以这里之前采用了固定写法来设置标题栏高度,目前BUG已经修复,使用上面直接获取的方法暂未发现BUGif (res.system.search('Android') !== -1) {
titleBarHeight = Math.floor(custom.bottom + custom.top - (statusBarHeight * 2));
}
else if (res.system.search('iOS') !== -1) {
if (res.model.search('iPhone X') !== -1) {
titleBarHeight = TOTALBAR_HEIGHT.iPhoneX - statusBarHeight
}
else {
titleBarHeight = TOTALBAR_HEIGHT.iPhone - statusBarHeight
}
}
const TOTALBAR_HEIGHT = { |
注意:web-view页面自定义导航栏不会生效