前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >开发 | 小程序如何快速适配 iPhone X?

开发 | 小程序如何快速适配 iPhone X?

作者头像
知晓君
发布2018-07-26 17:37:40
1.8K0
发布2018-07-26 17:37:40
举报
文章被收录于专栏:知晓程序
作者:张少壮

知晓程序注:

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=coverconstant(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 字段,用于判断机型。

在子页面中可以读取该值,举个商品详情页的栗子:

于是,一个简单的适配 iPhone X 底部圆角的方案就完成了。

至于为什么是 68 rpx:因为 iPhone X 的屏幕宽度和 iPhone 6 一样,都是 375 pt,但高度要比 iPhone 6 高了 145 pt。而小程序中 750 rpx = 375 pt = 750 物理像素,换算一下,就可以得出这个结论了。

最最后,iPhone X 壕可以扫描下面小程序码进行体验,欢迎拍砖指正~

「豌豆公主」小程序使用链接

https://minapp.com/miniapp/5112/

原文地址:

https://juejin.im/post/5a1d396551882546d71f157b

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-12-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 知晓程序 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档