setNeedsDisplay、setNeedsLayout、l
2019-03-08 本文已影响0人
liboxiang
setNeedsDisplay / setNeedsDisplayInRect:
通知系统视图需要被重绘,draw方法会被调用。将在下一个绘图周期重新绘制所有无效视图
setNeedsLayout
当想要调整子视图布局的时候,在主线程调用此方法
layoutIfNeeded
使用此方法强制视图立即更新其布局。使用“自动布局”时,布局引擎会根据需要更新视图的位置,以满足约束的更改。用接收此消息的视图作为根视图开始布局视图子树。如果没有待处理的布局更新,则此方法退出而不修改布局或调用任何与布局相关的回调。
layoutSubviews
子类可以根据需要覆盖此方法,以执行其子视图的更精确布局。仅当子视图的自动调整大小和基于约束的行为不能满足需要时,才应覆盖此方法。您可以使用实现直接设置子视图的框架矩形。
您不应该直接调用此方法。如果要强制进行布局更新,可以调用setNeedsLayout
方法,则将在下次runloop循环结束的时候进行实际绘制。如果要立即更新视图的布局,请调用layoutIfNeeded
方法。