uni-app踩坑之canvas绘制不显示

uni-app踩坑之canvas绘制不显示

问题描述:

  • 如下图所示,我用canvasShow来控制 canvas相关dom的隐藏与出现
  • canvasShow的默认值为false,当canvasShow的值第一次变为true时,绘制的矩形并不能出现;之后就能正常出现了。

在这里插入图片描述
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qbAanC5y-1583837839876)(en-resource://database/4678:1)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ihx2haPS-1583837839878)(en-resource://database/4680:1)]

问题分析:

  1. 在canvasShow第一次变为true之前,dom是这样的
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qLqCzMKK-1583837839879)(en-resource://database/4682:1)]
    可以看出,canvas的width height都为0,而这个时候canvas的父级是被隐藏的;经过测试我们可以得出结论:uni-app中canvas的width height的值依赖于父元素的宽高。

  2. canvasShow第一次变为true,dom是这样的
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SQA65UiP-1583837839880)(en-resource://database/4684:1)]
    这个时候,由于父元素出现了,所以canvas的宽高也就有了。但是,canvas绘制的矩形并不能显示

  3. 之后canvasShow再次变为true,canvas都能正常显示绘制的矩形。因为经过第一次canvasShow变为true后 canvas dom的width height就一直存在了。

问题解决

将绘制方法写在异步方法中
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NX9i6eZD-1583837839881)(en-resource://database/4686:0)]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章