setNeedsDisplay 是立即生效还是只是排队等候?

Posted

技术标签:

【中文标题】setNeedsDisplay 是立即生效还是只是排队等候?【英文标题】:Does setNeedsDisplay have immediate effect or it is merely queued for later? 【发布时间】:2011-08-24 14:35:25 【问题描述】:

这里有人知道setNeedsDisplay 是否会立即导致drawRect 呼叫并立即更新屏幕? 或者它仅仅是一个排队的请求? 谢谢。

【问题讨论】:

【参考方案1】:

直到下一个绘图周期才真正重绘视图。这只是通知系统应该重绘视图。

见UIView Class Reference

您显然可以通过将内容模式设置为UIViewContentModeRedraw 来完成此操作。我没有亲自做过,但代码应该类似于

UIView *redrawView = [[UIView alloc] initWithFrame:frame];
...
redrawView.contentMode = UIViewContentModeRedraw;

见View and Window Modes: Content Modes

【讨论】:

您知道如何强制重绘立即进行吗?谢谢。 在我的测试中将 contentMode 设置为 UIViewContentModeRedraw 不会导致 setNeedsDisplay 后立即重绘,只有当边界发生变化时。所以我想你可以跳出界限? 你也可以看看这里***.com/questions/1503761/…

以上是关于setNeedsDisplay 是立即生效还是只是排队等候?的主要内容,如果未能解决你的问题,请参考以下文章

UIScrollView setNeedsDisplay 不工作,还是别的啥?

调用 setNeedsLayout 或 setNeedsDisplay 的场合

修改ulimit参数如何理解生效

某些页面上的后退按钮导航不能立即生效,但经过多次点击后

Windows 如何让环境变量(例如PATH路径)设置后------不需要重启立即生效

windows 为啥设置了环境变量没生效