iOS:当视图中有两个需要重绘的小的非相邻区域时,更快调用setNeedsDisplay Rect两次?

时间:2011-07-23 12:13:52

标签: ios cocoa-touch drawing drawrect

假设我的视图中有两个非常小的区域需要重绘。一个位于左上角,另一个位于右下角。我可以使用它们的坐标将包含两个区域的单个大型CGRect传递给setNeedsDisplayInRect,但这最终会包含很多其他需要重新绘制的区域。

所以另一种选择是简单地将包含CGRects的个体传递给setNeedsDisplayInRect,一个接一个地传递,即

[self.view setNeedsDisplayInRect:rectForArea1]
[self.view setNeedsDisplayInRect:rectForArea2]

哪个通常会更快?最小化drawRect:最终被调用的次数,或者最小化它必须重绘的屏幕区域的数量,即使它必须重绘两次?

2 个答案:

答案 0 :(得分:3)

没关系。如上所述here,iOS将始终更新整个视图,与您传入setNeedsDisplayInRect的rect无关:

  

请注意,由于iPhone / iPod touch / iPad的更新方式   屏幕,如果你打电话,整个视图将被重绘   -setNeedsDisplayInRect:或-setNeedsDisplay:。

答案 1 :(得分:0)

取决于那两个矩阵。

如果两个边界加法都是视图边界的75%,那么我将简单地调用

    [self.view setNeedsDisplay];

因为我们画了几乎整个视图。

如果两个边界加法都低于视图边界的50%那么我将调用简单的调用

    [self.view setNeedsDisplayInRect:rectForArea1];

    [self.view setNeedsDisplayInRect:rectForArea2];

因为我们需要绘制小空格