drawRect:速度和CGContextDrawRadialGradient(超慢?)

发布于 2024-10-07 06:55:33 字数 400 浏览 3 评论 0原文

我的 UIView 子类的 drawRect: 函数遇到问题。 我在其中使用了 CGContextDrawRadialGradient() ,并且它。 当用户拖动我的 UIView 时,如果我包含渐变,它会很难跟上。

使用时间分析器,我看到字面意思是 >我 98% 的时间都花在子类的 drawRect: 方法上。

第一:使用渐变的静态图像会更快吗? 第二:有什么办法可以加快速度吗?我可以以某种方式缓存渐变吗?它不会发生太大变化,但当您拖动 UIView 时,它周围的路径以及与其相交的路径确实会发生变化。

如果有人知道如何使 drawRect: 方法不占用所有 cpu 周期的一般指南,那就太棒了。

I'm having problems with my UIView subclass' drawRect: function.
I use CGContextDrawRadialGradient() in it, and it.
When the user drags my UIView it struggled to keep up if I include the gradient.

Using Time Profiler I see that literally > 98% of my time is spent in my subclass' drawRect: method.

First: would using a static image of a gradient be faster?
Second: is there any way to speed this up? Can I cache the gradient somehow? it doesn't change much but paths around it and intersecting it do change as you drag the UIView.

If anybody knows of a general guide on how to make drawRect: methods not suck up all the cpu cycles, that would be awesome.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

窗影残 2024-10-14 06:55:33

我也有同样的问题。一种解决方案是绘制较小的渐变并将其放大。结果不是像素完美,但速度更快。

另请参阅此答案中提到的想法。

I'm having the same problem. One solution is to draw a smaller gradient and scale it up. The results is not pixel perfect, but faster.

See also the ideas mentioned in this answer.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文