AutoLayout与sizeToFit并存

如果 nib 或 storyboard 里用了 autoLayout,那么在viewDidLoad调sizeToFit是不管用的,因为实际顺序是先执行viewDidLoad再执行 autoLayout,执行 autoLayout 的时候会把 sizeToFit 的结果覆盖掉。不过,在viewDidLayoutSubviews里调sizeToFit是管用的。


一、设置sizeToFit

1.从Nib中加载View

AutoLayout与sizeToFit并存_第1张图片
加载View

2.修改textField自适应

AutoLayout与sizeToFit并存_第2张图片
加载view时修改约束生效

3.view进行subviews布局

AutoLayout与sizeToFit并存_第3张图片
subviews布局
没有改变subview的frame

4.父View调用子View的layoutSubviews

AutoLayout与sizeToFit并存_第4张图片
layoutSubviews布局
subview.frame变化

5.因为SubView执行 autoLayout 的时候把 sizeToFit 的结果覆盖掉,所以执行sizeToFit没有生效。


二、让sizeToFit生效

1.在View的layoutSubviews之后进行更改

AutoLayout与sizeToFit并存_第5张图片
更改sizeToFit
sizeToFit成功

2.在控制器ViewDidLayoutSubviews进行更改

AutoLayout与sizeToFit并存_第6张图片
更改sizeToFit

你可能感兴趣的:(AutoLayout与sizeToFit并存)