如果 nib 或 storyboard 里用了 autoLayout,那么在viewDidLoad调sizeToFit是不管用的,因为实际顺序是先执行viewDidLoad再执行 autoLayout,执行 autoLayout 的时候会把 sizeToFit 的结果覆盖掉。不过,在viewDidLayoutSubviews里调sizeToFit是管用的。
一、设置sizeToFit
1.从Nib中加载View
加载View
2.修改textField自适应
加载view时修改约束生效
3.view进行subviews布局
subviews布局
没有改变subview的frame
4.父View调用子View的layoutSubviews
layoutSubviews布局
subview.frame变化
5.因为SubView执行 autoLayout 的时候把 sizeToFit 的结果覆盖掉,所以执行sizeToFit没有生效。
二、让sizeToFit生效
1.在View的layoutSubviews之后进行更改
更改sizeToFit
sizeToFit成功
2.在控制器ViewDidLayoutSubviews进行更改
更改sizeToFit