我有一个NSMutableArray
持有对象(对象代表弧);
每次点击屏幕时,数组中都会添加一个圆圈,并且绘制的矩形集需要更新。我没有打电话drawRect:
,只是告诉它需要更新。
每次drawRect:
查看圆圈数组时,它是重新绘制每个圆圈,还是只是新的/与上次相比没有改变?
如果它确实重绘了每个圆圈,是否有任何好的做法可以针对此进行优化?
我有一个NSMutableArray
持有对象(对象代表弧);
每次点击屏幕时,数组中都会添加一个圆圈,并且绘制的矩形集需要更新。我没有打电话drawRect:
,只是告诉它需要更新。
每次drawRect:
查看圆圈数组时,它是重新绘制每个圆圈,还是只是新的/与上次相比没有改变?
如果它确实重绘了每个圆圈,是否有任何好的做法可以针对此进行优化?
您的绘图代码完全按照它所说的去做——如果您编写它来绘制每个圆圈,那么每个圆圈都会被绘制。您可以编写您的drawRect:
方法,使其考虑到传递的矩形,这是视图的“脏”部分 - 需要更新的部分,但只有通过测试和测量确定,才值得这样做,您的绘图是性能问题。
但是, Cocoa Touch会剪辑您的绘图,因此它不必刷新整个屏幕,如果您使用 ,而不是setNeedsDisplay
使用setNeedsDisplayInRect:
,则传递一个适当的脏矩形。例如,当添加一个新圆时,您可以只传递每个新圆的边界矩形。
你的意思是你正在调用 setNeedsDisplay 吗?如果是这样,该方法会重绘整个视图。如果您只想重绘视图的一部分,可以使用 setNeedsDisplayInRect:。