setNeedsLayout和setNeedsDisplay

Spa*_*Dog 65 ios setneedsdisplay autolayout

UIView方法setNeedsLayout和真正的区别是什么setNeedsDisplay

像往常一样,文档对此很有雾.

Jor*_*ers 92

实际上文档很清楚:

  • setNeedsLayout将布局子视图

    如果要调整视图子视图的布局,请在应用程序的主线程上调用此方法.

  • setNeedsDisplay将调用您的视图重绘(drawRect:等).

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

  • 布局不是关于绘图.布局是关于定位/调整子视图的.但是,是的,都延迟到下一个runloop循环.因此,连续多次调用一次只会导致一次重新布局/重绘. (21认同)
  • @Pwner假设您想在两个点之间绘制一条线(两个UIView,确切地说),这是在'drawRect:`的**DrawLineView**中实现的.更改一个按钮或两个按钮的位置后,需要调用`[drawLineView setNeedsDisplay];`重绘两个点的新位置之间的线. (8认同)
  • 请提供何时需要`setNeedsDisplay`的示例. (4认同)
  • @Pwner http://blog.fujianjin6471.com/2015/06/11/An-example-of-when-should-setNeedsDisplay-be-Called.html (4认同)
  • 不,我想知道两者都用于重绘视图,对吧?两者都会等到下一个绘制周期重新绘制,对吗? (3认同)
  • 调用“ setNeedsDisplay”以确保您的视图重绘。一个常见的用例是在更改绘图期间使用的类的属性后调用此方法。 (2认同)