假设我的视图中有两个非常小的区域需要重绘。一个位于左上角,另一个位于右下角。我可以使用它们的坐标将包含两个区域的单个大型CGRect传递给setNeedsDisplayInRect,但这最终会包含很多其他需要重新绘制不的区域。
所以另一种选择是简单地将包含CGRects的个体传递给setNeedsDisplayInRect,一个接一个地传递,即
[self.view setNeedsDisplayInRect:rectForArea1]
[self.view setNeedsDisplayInRect:rectForArea2]
哪个通常会更快?最小化drawRect:最终被调用的次数,或者最小化它必须重绘的屏幕区域的数量,即使它必须重绘两次?
答案 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];
因为我们需要绘制小空格