在编写我的应用程序时,我到了必须更新屏幕上的两个矩形的位置。所以我调用[self setNeedsDisplayInRect:rect1]然后调用[self setNeedsDisplayInRect:rect2]。调用drawRect方法时,矩形参数是包含rect1和rect2的最小矩形。
我可以毫无问题地处理这个问题,但是当两个矩形相距很远时,我就会更新很多房地产而没有任何收益。在这种情况下,我只想重新绘制我的两个小矩形。
所以我的问题是如何防止底层系统将我的两个调用合并为一个?
答案 0 :(得分:0)
您无需阻止系统合并调用,因为在-drawRect:
中,您可以通过调用-getRectsBeingDrawn:count:
来查询必须更新的各个区域。这将返回您的单个矩形rect1
和rect2
。
请注意,-getRectsBeingDrawn:count:
保证返回不重叠的矩形。这似乎意味着,例如,如果您为同一个矩形调用-setNeedsDisplayInRect:
两次,-getRectsBeingDrawn:count:
将仅返回该矩形一次。换句话说,您不必担心两次绘制相同的区域。