当canvas绘制图片完成之后,来执行draw的时候,
1.安卓手机不受影响,可以正常执行draw的回调函数
2.苹果手机在ios高版本系统上,则可能出现draw的回调函数不执行了。 
比如以下代码:

let context = uni.createCanvasContext('myCanvasId',this);
// 项目业务逻辑...
// 项目业务逻辑...
// 项目业务逻辑...
context.draw(false,()=>{});

之所以会出现这样的原因是:ios高版本系统 对于 canvas的元素要求是: canvas元素必须存在,如果在业务逻辑中出现过不存在,则可能会导致draw的回调不执行。
比如下面的例子:

1. 问题原因:设置了 if 或者 hidden 导致

<!-- 在苹果手机上可能会不执行draw的回调 -->
<canvas 
  canvas-id="myCanvasId"
  :style="{ width: canvasWidth + 'px', height: canvasHeight + 'px' }" 
  v-if="canvasShow"
></canvas>

2. 解决方案:去掉 if 或者 hidden

<canvas 
  canvas-id="myCanvasId"
  :style="{ width: canvasWidth + 'px', height: canvasHeight + 'px' }" 
  v-show="canvasShow"
></canvas>

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐