setNeedsLayout layoutIfNeeded s
2022-11-17 本文已影响0人
寒雨晚风
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。