一:
iOS swift layoutSubviews()
调用方法:
直接调用setLayoutSubviews。(这个在上面苹果官方文档里有说明)
addSubview的时候。
当view的frame发生改变的时候。
滑动UIScrollView的时候。
旋转Screen会触发父UIView上的layoutSubviews事件。
改变一个UIView大小的时候也会触发父UIView上的layoutSubviews事件。
二:
setNeedsLayout 和 layoutIfNeeded 的区别
解决:
setNeedsLayout :需要重新布局, runloop结束前刷新, 只会刷新一次, layoutSubviews 一定会被调用。
layoutIfNeeded : 如果有需要刷新的标记 ,立即调用layoutSubviews 进行布局(如果没有标记, 不会调用layoutSubviews)
layoutIfNeeded 不一定会调用layoutSubviews方法。
setNeedsLayout 一定会调用layoutSubviews 方法, 在下一轮runloop 结束前。
如果在runloop 中立即刷新,调用顺序是:
1 (self setNeedsLayout)
2 (self layoutIfNeeded)