setNeedsLayout layoutIfNeeded setNeedsDisplay

setNeedsLayout: 标记当前视图,在runloop的下一个周期调用layoutSubviews。

layoutIfNeeded:如果这个视图有被setNeedsLayout方法标记的,那么会立即执行layoutSubviews方法。

setNeedsDisplay:调用这个方法会执行- (void)drawRect:(CGRect)rect方法。

layoutSubviews触发条件

1、init初始化不会触发layoutSubviews。

2、addSubview会触发layoutSubviews。

3、设置view的Frame会触发layoutSubviews,当然前提是frame的值设置前后发生了变化。

4、滚动一个UIScrollView会触发layoutSubviews。

5、旋转Screen会触发父UIView上的layoutSubviews事件。

6、改变一个UIView大小的时候也会触发父UIView上的layoutSubviews事件。

7、直接调用setLayoutSubviews。

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