1、当您为某个视图添加子视图时,UIKit 会向相应的父子视图发送几个消息,通知它们当前发生的状态变化。您可以在自己的定制视图中对诸如 willMoveToSuperview: 、
willMoveToWindow: 、 willRemoveSubview: 、 didAddSubview: 、 didMoveToSuperview 、和 didMoveToWindow这样的方法进行重载,以便在事件发生的前后进行必要的处理,并根据发生的变化更新视图的状态信息;
2、layoutSubviews:
当一个控件的frame发生改变的时候就会调用、一般在这里布局内部的子控件(设置子控件的frame)
发现以下几种情况layoutSubviews会被调用。
- 直接调用setLayoutSubviews。(这个在上面苹果官方文档里有说明)
- addSubview的时候。
- 当view的frame发生改变的时候。
- 滑动UIScrollView的时候。
- 旋转Screen会触发父UIView上的layoutSubviews事件。
- 改变一个UIView大小的时候也会触发父UIView上的layoutSubviews事件。