setNeedsLayout 和 setNeedsDisplay

setNeedsLayout and setNeedsDisplay

提问人:Duck 提问时间:1/25/2013 最后编辑:mfaaniDuck 更新时间:12/3/2017 访问量:35494

问:

methods 和 之间的真正区别是什么?UIViewsetNeedsLayoutsetNeedsDisplay

像往常一样,文档对此很模糊。

iOS 自动布局 集需要显示

评论


答:

104赞 Joris Kluivers 1/25/2013 #1

实际上,文档对此非常清楚:

  • setNeedsLayout 将布局子视图

    当您想要调整视图子视图的布局时,请在应用程序的主线程上调用此方法。

  • setNeedsDisplay 将要求重新绘制视图(等)。drawRect:

    您可以使用此方法或 setNeedsDisplayInRect: 来通知系统需要重新绘制视图的内容。

评论

5赞 Duck 1/25/2013
不,我想知道更多关于两者都用于重绘视图,对吧?两者都会等到下一个抽奖周期重新绘制,对吧?
27赞 Joris Kluivers 1/25/2013
布局与绘图无关。布局是关于子视图的定位/大小调整。但是,是的,两者都延迟到下一个运行循环周期。因此,连续多次调用一个只会导致一次重新布局/重绘。
5赞 Pwner 12/4/2013
请举例说明何时需要。setNeedsDisplay
11赞 fujianjin6471 5/31/2015
@Pwner 假设你想在两个点之间画一条线(确切地说是两个 UIView),这是在 DrawLineView 中实现的。更改一个按钮或两个按钮的位置后,需要调用以重新绘制两个点的新位置之间的线。drawRect:[drawLineView setNeedsDisplay];
5赞 fujianjin6471 7/6/2015
@Pwner blog.fujianjin6471.com/2015/06/11/......