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