使用自定義導航,產品能夠對導航欄進行深度定製,對與場景比較複雜的小程序來講,能夠明顯的提升用戶體驗。可是相應的,微信小程序的自定義導航欄並不完美,入坑需謹慎。。。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 |