前言
layoutSubviews 和 layoutIfNeeded 是 UIView 的两个重要方法,下面我们主要从自定义 view 的角度去阐述这两个方法。
方法描述
-
layoutSubviews:在布局UIView的子控件的时候,一般我们会在layoutSubviews方法中设置UIView的子控件的约束或frame。 -
layoutIfNeeded:当UIView调用layoutIfNeeded方法后,会立即调用layoutSubviews方法去布局UIView的子控件。
什么时候调用 layoutSubviews方法呢?
- 当被
添加至父视图中时会被调用(有延迟的调用); - 自己
添加子控件时会被调用(有延迟的调用); - 自己的
尺寸发生变化时会被调用(有延迟的调用);
注⚠️:
(1) 尺寸指的是宽或高,位置发生变化时是不会被调用的!
(2)如果多次设置尺寸,但是尺寸没有变化,也不会被调用。 - 当自己的
子控件尺寸发生变化时会被调用(有延迟的调用); - 当滚动一个
UIScrollView时会触发layoutSubviews方法(有延迟的调用); - 当
旋转屏幕时会触发layoutSubviews方法(有延迟的调用); - 调用
layoutIfNeeded方法时会被立即调用。
Author
如果你有什么建议,可以关注我的公众号:iOS开发者进阶,直接留言,留言必回。








网友评论