【问题标题】:Why does iOS fail to render html5 canvas drawing after resize?为什么iOS在resize后无法渲染html5 canvas绘图?
【发布时间】:2014-09-10 03:56:06
【问题描述】:

我有一个 HTML5 Canvas 对象,我使用 Javascript 调整它的大小。然后我在上面画。

在 iOS 上,除非我使用 setTimeout 延迟绘图,否则绘图不会显示。

所以这段代码什么也没显示...

myCanvas.width = width;
myContext.strokeStyle = '#000';
myContext.moveTo(0, 0);
myContext.lineTo(2000, 2000);
myContext.stroke();

...但确实如此:

myCanvas.width = width;

setTimeout(function(){
    myContext.strokeStyle = '#000';
    myContext.moveTo(0, 0);
    myContext.lineTo(2000, 2000);
    myContext.stroke();
}, 100);

两者都可以在桌面浏览器上正常工作,但不能在 Safari iOS 中。

是什么导致了这个问题,setTimeout 是解决这个问题的最佳解决方案吗?

谢谢,

【问题讨论】:

  • 对我来说闻起来像是一场比赛。我不确定为什么会这样,但setTimeout 不是最好的解决方案。
  • 感谢您的评论 - 我已经添加了答案,但我对问题的诊断是错误的。

标签: javascript ios html canvas


【解决方案1】:

我的错。原来 setTimeout 与它无关。

尽管可能对其他人有所帮助,但我确实发现了浏览器中画布允许的最大尺寸,而这在移动浏览器(例如 Safari)上非常小。

有关更多信息,请参阅此问题:Maximum size of a <canvas> element

我试图为 iPhone 渲染一个太大的画布。

【讨论】:

    猜你喜欢
    • 2012-04-19
    • 1970-01-01
    • 1970-01-01
    • 2012-03-23
    • 2013-09-22
    • 2015-07-29
    • 2013-05-21
    • 2014-11-26
    • 2014-03-13
    相关资源
    最近更新 更多