收藏
回答

wx.getSystemInfo返回safeArea,在真机和模拟器不一致?在iPhoneXr不对?

关于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设备)?

最后一次编辑于  2020-05-10
回答关注问题邀请回答
收藏

1 个回答

  • 白
    2020-05-19

    确实。。模拟器里面计算半天实现交互到了真机就是不行,这种bug让人上火

    2020-05-19
    有用
    回复
登录 后发表内容
问题标签