- iOS - setNeedsLayout 和 layoutIfN
- UIView的setNeedsLayout, layoutIfN
- UIView的setNeedsLayout, layoutIfN
- UIView的setNeedsLayout, layoutIfN
- UIView的setNeedsLayout, layoutIfN
- UIView的setNeedsLayout, layoutIfN
- UIView的setNeedsLayout, layoutIfN
- UIView的setNeedsLayout, layoutIfN
- UIView的setNeedsLayout, layoutIfN
- Masonry中setNeedsLayout、layoutIfN
runloop的UI更新redraw存在延迟,当前的变化会在下一个cycle更新
- setNeedsLayout()
这是一个async的方法,setNeedsLayout立刻完成返回, 但是UI更新在之后完成。告诉系统layout要从画UIView和subviews子视图。
当需要调整当前view的子视图时,在主线程调取这个方法。这个方法不会强制立刻更新UI,而是会在下一个cycle更新UI,这样对性能优化比较好。
- layoutIfNeeded()
这是一个sync同步方法,立刻执行UI的更新,而不是等下一个cycle更新。当这个方法完成时,layout已经调整更新完成。
- layoutSubviews()
根据subviews的constraints更新子视图。子类可以override这个方法,进行精细subviews。
layoutSubviews()方法
不能主动调取layoutSubviews().
网友评论