1

我有一个NSMutableArray持有对象(对象代表弧);

每次点击屏幕时,数组中都会添加一个圆圈,并且绘制的矩形集需要更新。我没有打电话drawRect:,只是告诉它需要更新。

每次drawRect:查看圆圈数组时,它是重新绘制每个圆圈,还是只是新的/与上次相比没有改变?

如果它确实重绘了每个圆圈,是否有任何好的做法可以针对此进行优化?

4

2 回答 2

1

您的绘图代码完全按照它所说的去做——如果您编写它来绘制每个圆圈,那么每个圆圈都会被绘制。您可以编写您的drawRect:方法,使其考虑到传递的矩形,这是视图的“脏”部分 - 需要更新的部分,但只有通过测试和测量确定,才值得这样做,您的绘图是性能问题。

但是, Cocoa Touch剪辑您的绘图,因此不必刷新整个屏幕,如果您使用 ,而不是setNeedsDisplay使用setNeedsDisplayInRect:,则传递一个适当的脏矩形。例如,当添加一个新圆时,您可以只传递每个新圆的边界矩形。

于 2012-08-08T03:30:03.387 回答
0

你的意思是你正在调用 setNeedsDisplay 吗?如果是这样,该方法会重绘整个视图。如果您只想重绘视图的一部分,可以使用 setNeedsDisplayInRect:。

于 2012-08-08T03:14:10.817 回答