我做了一个很好的UIView子类,它在-drawRect:中绘制了所有的东西,因为人们说这很好。该观点是另一个观点的子视图。另一个观点是使用核心动画制作动画:它缩小,旋转和移动。但是,我遇到了这样的情况:-drawRect似乎在动画期间被称为万亿次,性能很糟糕。
这是正常的还是我做错了什么呢?
我在UITableViewCell的文档中发现了这一点,这很奇怪:
但是,在编辑模式下绘图是 不鼓励,因为你可能 回想一下,细胞定制绘图 动画进出编辑模式 严重影响表现。
So -drawRect:做任何核心动画时都非常糟糕?我还记得其他苹果资源,他们“在动画期间不重绘”。 Paradoxon。试。
答案 0 :(得分:2)
如果您的UIView的contentMode
设置为UIViewContentModeRedraw
,那么根据文档setNeedsDisplay
,只要边界发生变化,就会调用它。我不确定在动画期间是否会出现这种情况,但是(我认为动画系统的表现不同)但可以解释对drawRect
的一连串调用。
答案 1 :(得分:1)
drawRect:
后才能调用{p> setNeedsDisplay: YES
。我猜测,随着缩放的发生,你的视图被要求重绘。如果缩放,旋转和移动是转换的一部分,您可以在缓存视图上执行转换。