drawRect:速度和CGContextDrawRadialGradient(超慢?)
我的 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我也有同样的问题。一种解决方案是绘制较小的渐变并将其放大。结果不是像素完美,但速度更快。
另请参阅此答案中提到的想法。
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.