小程序中获取屏幕高度及iPhoneX适配问题

时间:2024-04-08 16:08:27

屏幕高度问题

小程序中有时候需要获取屏幕高度使用,简单的通过wx.getSystemInfo即可获取到手机的系统信息

wx.getSystemInfo中有3个高度,分别是:

screenHeight:屏幕高度

windowHeight:窗口高度

statusBarHeight:状态栏高度

 

对于小程序来说屏幕的高度 = 状态栏高度 + 导航栏高度 + 窗口高度 + 标签栏高度,如下图所示:

小程序中获取屏幕高度及iPhoneX适配问题

所以我们想要获取窗口可使用高度时,在含有tabbar标签栏的页面中可以直接通过wx.getSystemInfo获取windowHeight来使用,使用方法:

app.js

App({
  onLaunch: function() { 
    // 获取屏幕高度
    wx.getSystemInfo({
      success: function(res) {
        that.globalData.windowHeight = res.windowHeight
      }
    })
},
globalData: {
    windowHeight: null,
  }
})

index.js 

 Page({
     data: {
        windowHeight: app.globalData.windowHeight,
     },
 })

index.wxml

<scroll-view scroll-y style='height:{{windowHeight}}px;'>

在不含有tabbar标签栏的页面中屏幕可使用高度的获取有两种方式

1、windowHeight窗口高度 + tabbar标签栏高度

2、screenHeight屏幕高度 -  statusBarHeight状态栏高度 - 导航栏高度

iPhoneX 适配问题

我们这里先简单总结一下 iPhone X 屏幕的基础数据,方便后续在小程序开发中进行适配。

  • 屏幕尺寸:5.8 英寸(对角线)

  • 屏幕物理分辨率:1125px × 2436px,458 ppi

  • 实际开发适配尺寸:375pt × 812pt,@3x

此外,由于在 iPhone X 屏幕顶部状态栏区域有“齐刘海”,以及在屏幕底部增加了“操作条”,如下图所示,因此,我们在开发中需要注意安全区域的问题。

在小程序页面开发中,涉及到需要适配 iPhone X 的地方主要有:导航栏(NavigationBar),标签栏(TabBar)以及页面底部的吸底按钮。

相对于iPhone6来说,iPhoneX的导航栏高度并没有改变,依然是88px,增加的是statusBarHeight状态栏高度,

  iPhone6:

小程序中获取屏幕高度及iPhoneX适配问题

iPhoneX:

小程序中获取屏幕高度及iPhoneX适配问题

而底部吸盘的高度不好确定,所以在不含有tabbar标签栏的页面中屏幕可使用高度的获取就用第二种方式较好

屏幕可使用高度 = screenHeight屏幕高度 -  statusBarHeight状态栏高度 - 导航栏高度

 

但小程序官方的tabbar是给底部吸盘预留了空间了,所以可以根据开发者的具体情况决定是否获取全部可使用高度

小程序中获取屏幕高度及iPhoneX适配问题