提问人:Duck 提问时间:1/25/2013 最后编辑:mfaaniDuck 更新时间:12/3/2017 访问量:35494
setNeedsLayout 和 setNeedsDisplay
setNeedsLayout and setNeedsDisplay
答:
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/......
评论