首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS:当视图中有两个不相邻的小区域需要重绘时,调用setNeedsDisplayInRect两次更快?

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

Stack Overflow用户
提问于 2011-07-23 12:13:51
回答 2查看 1.3K关注 0票数 2

假设我的观点中有两个很小的区域需要重新绘制。一个在左上角,另一个在右下角。我可以使用它们的坐标将包含这两个区域的单个大型CGRect传递给setNeedsDisplayInRect,但这最终将包括许多其他做而不是的区域需要重新绘制。

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

代码语言:javascript
复制
[self.view setNeedsDisplayInRect:rectForArea1]
[self.view setNeedsDisplayInRect:rectForArea2]

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

EN

回答 2

Stack Overflow用户

发布于 2012-10-28 14:58:54

这不重要。正如所描述的这里,iOS将始终更新整个视图,而不依赖于传递给setNeedsDisplayInRect的rect:

请注意,由于iPhone/iPod /iPad更新屏幕的方式,如果您调用-setNeedsDisplayInRect:或-setNeedsDisplay:,整个视图将被重新绘制。

票数 3
EN

Stack Overflow用户

发布于 2011-07-23 12:46:59

这取决于那两条直线。

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

代码语言:javascript
复制
    [self.view setNeedsDisplay];

因为我们画的几乎是全景线。

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

代码语言:javascript
复制
    [self.view setNeedsDisplayInRect:rectForArea1];

    [self.view setNeedsDisplayInRect:rectForArea2];

因为我们需要画小空间

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6800262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档