1.setNeedsLayout:
告知页面需要更新,但是不会立即更新,执行后会立刻调用layoutSubviews方法;
2.layoutIfNeeded:
告知页面布局立刻更新,所以一般都会和setNeedsLayout一起使用.如果希望立即生成新的frame需要调用此方法,利用这点一般布局动画可以在更新布局后直接使用这个方法让g动画生效;
3. layoutSubviews:系统重写布局:
调用的时机:
3.1.直接调用[self setNeedsLayout];(这个在上面苹果官方文档里有说明)
3.2.addSubview的时候。=>当添加子控件的时候,不管子控件有没有尺寸都会调用
3.3.当view的size发生改变的时候。=>当size改变的时候调用一次(size每次都不同,如果size相同就不会调用)
3.4.滑动UIScrollView的时候。
3.5.旋转Screen会触发父UIView上的layoutSubviews事件。
注意:当view的size的值为0的时候,addSubview也不会调用layoutSubviews。当要给这个view添加子控件的时候不管他的size有没有值都会调用===>初始化,当size不为0的时候调用一次,当size为0的时候不会调用(在任何方法里面都不会调用)
4.setNeedsUpdateConstraints:
告知需要更细约束,但是不会立刻开始,系统然后调用updateConstraints;
5.updateConstraintsIfNeeded:
告知立刻更新约束,系统立即调用updateConstraints;
6.updateConstraints:
系统更新约束(苹果推荐,约束,增加和修改放在此方法种).