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 的场合