1. 程式人生 > >小程式windowHeight在不同頁面高度不一致問題及解決方案

小程式windowHeight在不同頁面高度不一致問題及解決方案

小程式可以通過wx.getSystemInfo獲取系統資訊

 

 1. windowHeight 概念

可使用視窗高度,即:螢幕高度(screenHeight) - 導航(tabbar)高度 - 導航欄高度 - 狀態列高度。

在不含導航(tabbar)的頁面,

windowHeight =螢幕高度(screenHeight) - 導航欄高度 - 狀態列高度

 

瞭解規則

iPhone X : 導航欄高度 44 、 狀態列高度 44 、tabBar高度 83 
其他機型 : 導航欄高度 44 、 狀態列高度 20 、 tabBar高度 49

 

 

2.使用windoeHeight

在頁面中呼叫wx.getSystemInfo即可獲取當前頁面的螢幕高度,

wx.getSystemInfo({
      success: function (res) {
        console.log('--------------獲取系統資訊,獲取螢幕高度---------------')
        console.log(res)
      },
      fail: function (res) { },
      complete: function (res) { },
    })

3.不同頁面WINDOWHEIGHT不一致解決辦法

但是不同頁面獲取的螢幕高度不同,為了方便使用,將WINDOWHEIGHT寫入全域性變數,在含有的TabBar頁面正常呼叫,在不含的TabBar頁面加上的TabBar的高度使用

app.js

onLaunch(){
     // 獲取螢幕高度
    wx.getSystemInfo({
      success: function (res) {
        that.globalData.windowHeight = res.windowHeight
      },
    })
},
 globalData: {
    windowHeight:''
}

含有的TabBar的頁面

xxx.js

var app = getApp();

data:{
    windowHeight: app.globalData.windowHeight,
}

不含的TabBar的頁面

xxx.js

var app = getApp();

data:{
    windowHeight: app.globalData.windowHeight + 48,
}

頁面使用

xxx.wxml

<view style='height:{{windowHeight+"px"}}'>

 

 

在app.js中獲取到的WINDOWHEIGHT包含的TabBar的高度

所以在不含的TabBar的頁面比含的TabBar頁面需要多加一個的TabBar的高度

 

 

 

以下為小程式官方文件wx.getSystemInfo的介紹

wx.getSystemInfo(Object object)

獲取系統資訊

引數

物件物件

屬性 型別 預設值 是否必填 說明 支援版本
成功 功能   介面呼叫成功的回撥函式  
失敗 功能   介面呼叫失敗的回撥函式  
完成 功能   介面呼叫結束的回撥函式(呼叫成功,失敗都會執行)  

object.success回撥函式

引數

物件資源

屬性 型別 說明 支援版本
手機品牌 > = 1.5.0
模型 手機型號  
pixelRatio 裝置畫素比  
螢幕寬度 螢幕寬度 > = 1.1.0
screenHeight 螢幕高度 > = 1.1.0
WINDOWWIDTH 可使用視窗寬度  
WINDOWHEIGHT 可使用視窗高度  
statusBarHeight 狀態列的高度 > = 1.9.0
語言 微信設定的語言  
微信版本號  
系統 作業系統版本  
平臺 客戶端平臺  
fontSizeSetting 使用者字型大小設定。以“我 - 設定 - 通用 - 字型大小”中的設定為準,單位px。 > = 1.5.0
SDKVersion 客戶端基礎庫版本 > = 1.1.0
benchmarkLevel (僅Android)效能等級,-2或0:該裝置無法執行小遊戲,-1:效能未知,> = 1裝置效能值,該值越高,裝置效能越好(目前裝置最高不到50) > = 1.8.0