使用自定义导航,产品能够对导航栏进行深度定制,对与场景比较复杂的小程序来讲,能够明显的提升用户体验。可是相应的,微信小程序的自定义导航栏并不完美,入坑需谨慎。。。php
全局配置 app.json
设置 window.navigationStyle: 'custom'
web
wx.getSystemInfo
获取设备信息,screenHeight - windowHeight
即导航栏高度。screenHeight - windowHeight
并不等于导航栏高度,因此没法在开启自定义导航栏的同时,动态计算导航栏高度。解决方法是,再未开启自定义时,收集设备信息计算导航栏高度,预约义在代码中。iPhone: 64px
、iPhone X: 88px
、Android: 88px
。须要注意的是,部分安卓设备可能没有状态栏高度statusBarHeight
,要作好兼容。目前没法直接经过微信接口获取到胶囊的UI参数,可是根据微信官方设计指导中关于胶囊按钮的描述,得知胶囊宽度87pt=116pxjson
web-view
组件会默认覆盖全屏,会致使没法在小程序内为 webview 页面适配自定义导航栏。web-view
组件的页面,自定义导航栏失效,至关于navigationStyle: 'default'
。web-view
组件的页面,在部分安卓机型底部会被截断,截断高度为导航栏高度。fixed
布局固定在顶部,页面上经过fixed
布局固定在顶部的节点都会受影响。6 * 10^4 + 7 * 10^2 + 2 = 60702
。__wxConfig
,能够访问到全局配置。能够为设置自定义导航栏提供参考。设备 | statusBarHeight | screenHeight | windowHeight | screenHeight - windowHeight |
---|---|---|---|---|
iPhone 5s | 20 | 568 | 504 | 64 |
iPhone 6 | 20 | 667 | 603 | 64 |
iPhone 6 Plus | 20 | 736 | 672 | 64 |
iPhone X | 44 | 812 | 724 | 88 |
OPPO R11s | 18 | 672 | 606 | 66 |
HONOR STF-AL00 | 24 | 640 | 568 | 72 |
vivo X9i | - | 640 | 568 | 72 |
MIX 2S | 24 | 785 | 713 | 72 |