作者:张少壮
知晓程序注:
iPhone X 推出已经有些日子了,越来越多人用上了这款「带刘海」的手机。
但是,由于 iPhone X 的「异型」屏幕,以及底部的「小白条」的存在,
不少开发者都头疼应该如何适配这块略显奇怪的屏幕。
在小程序上,我们应该如何快速适配 iPhone X 呢?本期,知晓程序就来与大家探讨,
小程序应该如何快速适配 iPhone X?
随着第二、三批 iPhone X 的陆续到货,身边的土豪们纷纷用了起来。又因为 iPhone X 的齐刘海导致的适配问题很多,所以这群土豪更沉浸在各种找 bug 中。
不出所料,「豌豆公主」小程序在一些地方也出现了一丢丢体验不好的地方。首当其冲的,是
商品详情页和购物车的吸底按钮栏,会与 Home Indicator 横条(俗称「小白条」)重叠,这样在点击下方按钮时很容易误触发手势操作。
是 bug 就得修,是体验问题就得优化,于是立马搞了一台 iPhone X 开始研究。
网页端的适配还好,有 viewport meta 标签,以及下面的方案进行处理。
但小程序就比较尴尬了。
从四个角被裁掉的表现,可以推测小程序里的
viewport-fit默认为
cover,但是没有接口去更改。所以,网页端通过
viewport-fix=cover 和
constant(safe-area-inset-bottom); 的适配方案不适合小程序。
目前,也没有看到小程序有对 iPhone X 等异形屏有特殊的接口或字段。小程序本身的底部 tab 栏对 iPhone X 的适配,也只是简单的加了一个白色底栏,提高了原有 tab 栏的位置。
为什么这么说呢?因为这一点可以从我们购物车页面看出,购物车页吸底操作并非通过
position: fixed; bottom: 0; 实现的,而是根据
windowHeight 减去自身高度,计算
top 值,从而模拟的吸底。
在小程序新版本自身适配 iPhone X 后,导致购物车底部按钮被盖住了一半,由此得出上面的结论(当然,此处为猜测)。
言归正传,
既然没有特殊的方案获取该值,我们只能通过
wx.getSystemInfo接口取获取设备信息,该接口使用方法如下:
其中,
res.model 便是设备的型号等信息,如果
model 中包含
iPhone X 字样,便可认为该设备为 iPhone X。我们在
app.js 中进行检测,然在全局增加一个
isIpx 字段,用于判断机型。