如何停止setNeedsDisplayInRect / drawRect合并?

时间:2010-05-29 14:46:06

标签: iphone

在编写我的应用程序时,我到了必须更新屏幕上的两个矩形的位置。所以我调用[self setNeedsDisplayInRect:rect1]然后调用[self setNeedsDisplayInRect:rect2]。调用drawRect方法时,矩形参数是包含rect1和rect2的最小矩形。

我可以毫无问题地处理这个问题,但是当两个矩形相距很远时,我就会更新很多房地产而没有任何收益。在这种情况下,我只想重新绘制我的两个小矩形。

所以我的问题是如何防止底层系统将我的两个调用合并为一个?

1 个答案:

答案 0 :(得分:0)

您无需阻止系统合并调用,因为在-drawRect:中,您可以通过调用-getRectsBeingDrawn:count:来查询必须更新的各个区域。这将返回您的单个矩形rect1rect2

请注意,-getRectsBeingDrawn:count:保证返回不重叠的矩形。这似乎意味着,例如,如果您为同一个矩形调用-setNeedsDisplayInRect:两次,-getRectsBeingDrawn:count:将仅返回该矩形一次。换句话说,您不必担心两次绘制相同的区域。