setNeedsDisplay、setNeedsLayout、layoutIfNeeded、layoutSubviews

setNeedsDisplay / setNeedsDisplayInRect:

通知系统视图需要被重绘,draw方法会被调用。将在下一个绘图周期重新绘制所有无效视图

setNeedsLayout

当想要调整子视图布局的时候,在主线程调用此方法

layoutIfNeeded

使用此方法强制视图立即更新其布局。使用“自动布局”时,布局引擎会根据需要更新视图的位置,以满足约束的更改。用接收此消息的视图作为根视图开始布局视图子树。如果没有待处理的布局更新,则此方法退出而不修改布局或调用任何与布局相关的回调。

layoutSubviews

子类可以根据需要覆盖此方法,以执行其子视图的更精确布局。仅当子视图的自动调整大小和基于约束的行为不能满足需要时,才应覆盖此方法。您可以使用实现直接设置子视图的框架矩形。

您不应该直接调用此方法。如果要强制进行布局更新,可以调用setNeedsLayout方法,则将在下次runloop循环结束的时候进行实际绘制。如果要立即更新视图的布局,请调用layoutIfNeeded方法。

你可能感兴趣的:(setNeedsDisplay、setNeedsLayout、layoutIfNeeded、layoutSubviews)