Core Animation是否导致我的子视图为每一帧调用-drawRect?

时间:2010-04-10 18:58:32

标签: iphone performance core-animation

我做了一个很好的UIView子类,它在-drawRect:中绘制了所有的东西,因为人们说这很好。该观点是另一个观点的子视图。另一个观点是使用核心动画制作动画:它缩小,旋转和移动。但是,我遇到了这样的情况:-drawRect似乎在动画期间被称为万亿次,性能很糟糕。

这是正常的还是我做错了什么呢?

我在UITableViewCell的文档中发现了这一点,这很奇怪:

  

但是,在编辑模式下绘图是   不鼓励,因为你可能   回想一下,细胞定制绘图   动画进出编辑模式   严重影响表现。

So -drawRect:做任何核心动画时都非常糟糕?我还记得其他苹果资源,他们“在动画期间不重绘”。 Paradoxon。试。

2 个答案:

答案 0 :(得分:2)

如果您的UIView的contentMode设置为UIViewContentModeRedraw,那么根据文档setNeedsDisplay,只要边界发生变化,就会调用它。我不确定在动画期间是否会出现这种情况,但是(我认为动画系统的表现不同)但可以解释对drawRect的一连串调用。

答案 1 :(得分:1)

只有在您的视图中调用drawRect:后才能调用{p> setNeedsDisplay: YES。我猜测,随着缩放的发生,你的视图被要求重绘。如果缩放,旋转和移动是转换的一部分,您可以在缓存视图上执行转换。