关于wx.getSystemInfo的返回值safeArea
【问题一】真机和模拟器数值不一致
这是iPhone Xr模拟器的数值:
safeArea: {
bottom: 896
height: 852
left: 0
right: 414
top: 44
width: 414
}
这是iPhone Xr真机的数值:
safeArea: {
bottom: 862
height: 818
left: 0
right: 414
top: 44
width: 414
}
建议参考客户端开发用的IDE的模拟器,模拟器的样式和各种数据都和真机保持一致,这不正是模拟器的作用吗?
不然模拟器上看到一个效果,真机上又是一个效果。这样模拟不了真实运行后的效果的模拟器,存在的意义是什么?
真机底部是有安全区的,模拟器上没有,那么开发的人怎么知道那个会影响到操作?这不就增加开发人员适配工作量了吗?
【问题二】真机数值没明白是怎么计算的?
safeArea: {
bottom: 862
height: 818
left: 0
right: 414
top: 44
width: 414
}
比如上面iPhone Xr的数值,看了API的说明。
top是“安全区域左上角的坐标”,但坐标是相对的,坐标原点是指哪里?屏幕的左上角?还是状态栏以下的左上角?还是状态栏+导航栏以下的左上角?iPhone设备和安卓设备是否一致?这些要说清楚。
另外这个height是818,这个怎么计算的?屏幕高度是896,减去top的44,减去底部的34,这样吗?安卓下又是怎样的?
【问题三】以下计算竖屏屏幕的有效高度是否正确?
const {windowHeight, screenHeight, safeArea} = res;
const {bottom} = safeArea || {};
const containerHeight = windowHeight - (screenHeight - bottom)
由于问题二的原因,我只能猜测这么计算出竖屏屏幕的有效高度,请问是否正确(包括iOS和android设备)?
同问
确实。。模拟器里面计算半天实现交互到了真机就是不行,这种bug让人上火