博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
小程序-canvas在IOS手机层级最高无法展示问题
阅读量:5294 次
发布时间:2019-06-14

本文共 2196 字,大约阅读时间需要 7 分钟。

要求的效果:

正面:

背面:

 

在开发者工具 利用css 和定位实现了一个版本

 

.topBox.on {transform:rotateY(180deg);}.topBox {position:relative;height:300rpx;transform-style:preserve-3d;transition:1s;}.codeBg {transform:rotateY(180deg);-webkit-transform:rotateY(180deg);backface-visibility:hidden;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;position:absolute;width:600rpx;height:300rpx;background:#fff;}

此时 在真机上测试 会发现出现问题

canvas在最上面  之后看官网api,原生组件的使用注意点,层级最高,其他组件的z-index无论为多少,都无法盖在原生组件上。

为了解决覆盖问题,在翻转在背面的时候 我进行了 对画布的清空,这样画布虽然在最上层 但是不会遮挡住后面的会员卡信息

但是会出现一个问题  翻转事件的触发问题,我的翻转事件是绑定在 最大的容器上 (包裹会员卡和二维码的大盒子容器)

  在安卓上,效果是可以实现的,在ios上,canvas所占领的位置 会无法触发翻转事件,为了解决这个问题 我在canvas上进行了方法绑定

  监听了canvas的触摸事件,在确定为ios的设备上 进行事件触发

//画布的触摸事件  moveStart:function(){    var that=this;          if (!that.isIOS()) { return }    console.log(1)      var a=setInterval(function(){        that.setData({          moveTime:that.data.moveTime++        })        console.log(that.data.moveTime)      },10)          that.setData({        timeBar:a      })  },  move:function(){    if (!this.isIOS()) { return }    console.log('移动了')  },    moveEnd:function(){    var that=this;       if (!that.isIOS()){return null}    console.log(this.data.moveTime)    if (this.data.moveTime<500){                    clearInterval(that.data.timeBar)        that.setData({          moveTime: 0        })         this.toTrans();      }else{        clearInterval(that.data.timeBar)        that.setData({          moveTime: 0        })      }  },

  设置一个定时器,获取触摸开始到结束的时间超过500ms为 长按不进行翻转事件的触发,小于500ms的确定为触发事件

isIOS: function () {    var flag = false;    wx.getSystemInfo({      success: function (res) {        if (res.platform == "ios") {          flag = true        }      }    })    return flag;  }, // 卡片旋转  toTrans:function(){  var that=this;  that.setData({    isTrans: !that.data.isTrans  })     if(that.data.isTrans){    that.getCode();  }else{    const ctx = wx.createCanvasContext('canvas')    ctx.clearRect(0, 0, 125, 125)    ctx.draw()  }  },data里声明moveTime:0,    timeBar:null

  这样就完成了 正反两面的翻转问题,但是还是有一点小问题 就是 清空canvas以后 会出现一瞬间的空白 暂时还没有好的办法解决 如果大家有好的方法 请一定留言告诉我 

 

 

 

 

 

转载于:https://www.cnblogs.com/GoTing/p/10407431.html

你可能感兴趣的文章
聊聊、Mybatis API
查看>>
Struts2,Spring3,Hibernate学习笔记
查看>>
MVC3 角色管理|MVC3权限设计
查看>>
c#之委托所有方法
查看>>
完全理解 Python 迭代对象、迭代器、生成器
查看>>
PEP8 规范
查看>>
Firefox插件一键切换兼容IE
查看>>
ThreadLocal与事务
查看>>
atitit.提升开发效率---动态语言总结
查看>>
Atitit.Hibernate中Criteria 使用总结and 关联查询 and 按照子对象查询 o9o
查看>>
Atitit.安全性方案规划设计4gm v1 q928
查看>>
删除用户帐户后,保留在桌面上的用户配置文件夹删除后会自动重新生成的问题...
查看>>
spring mvc显示图片(个人记录)
查看>>
34、Flask实战第34天:修改邮箱
查看>>
jQuery整体架构
查看>>
Unity使用脚本进行批量动态加载贴图
查看>>
ZT 蓝牙的AVDTP协议笔记
查看>>
windows下安装xgboost
查看>>
Linux操作系统实时性分析
查看>>
CPU供电维修
查看>>