移动端开发IOS的上下刘海安全区域的兼容性问题

403 阅读1分钟

移动端开发,手机安全区域的问题

获得手机的屏慕的属性值

//uni-app中
const sysinfo = uni.getSystemInfoSync();
console.log(sysinfo);

//taro中
const sysinfo = Taro.getSystemInfoSync();
console.log(sysinfo);

//微信小程序中
const sysinfo = wx.getSystemInfoSync();
console.log(sysinfo);

//解构出关键信息
const {safeArea:{bottom},screenHeight,statusBarHeight,navigationBarHeight} = sysinfo;

image.png

打印出来的属性很多.我们需要重点关注的是:

statusBarHeight:状态条高度(顶部刘海不同,状态条高度会不同)

navigationBarHeight:导航条高度

screenHeight:屏幕区域高度

safeArea.bottom:安全的下边距高度(如果下方有刘海,会排除掉刘海部分的距离)

几个重要的场景与公式

注:在使用以下公式时,笔者是禁用掉了默认导航条的,如果要使用默认导航条,则H5,APP与微信小程序的表现形式并不完全一样,需要单独+-默认导航条的高度.

image.png

几个常用的距离:

1.顶部有刘海,顶部状态栏占位盒子的高度:statusBarHeight+'px';

2.顶部自定义导航条的高度:写死44px或88rpx.

3.底部有刘海,需要占位空白盒子高度:screenHeight - safeArea.bottom + 'px'

4.底部tabbar的高度:1.写死44px或88rpx;2.写死44px + (第3项)底部刘海占位空白盒子的高度

5.中部内容滚动区的高度:safeArea.bottom - statusBarHeight - navigationBarHeight + 'px'

IPhone6效果展示: 底部无安全留白 image.png

IPhoneX效果展示: 底部安全留白34px image.png