1.Auto Layout是Apple提供的一个基于约束设置的布局,动态计算视图大小和位置的库
2.在引入自动布局之前,iOS开发都采用手动布局方式。而手动布局的方式,原始落后、界面开发维护效率低。苹果从iOS 6开始引用Auto Layout布局,到iOS 12针对性能做大幅度提升优化。
3.Auto Layout 使用布局算法Cassowary,能够有效解析线性等式系统线性不等式系统,用来表示用户界面中那些相等关系和不等关系。
4.Auto Layout的布局引擎系统Layout Engine负责整个界面布局。生命周期如下:
Auto Layout中的Layout Engine引擎负责页面布局。Run Loop会一直处于监听状态,当约束发生变化后会触发Deffered Layout Pass,在里面做容错处理,例如约束丢失等约束冲突等其他情况,并把view标识为待更新状态,当下一次刷新屏幕动作,比如调用layoutIfNeeded时,Layout Engine 会从上到下调用 layoutSubviews() ,通过 Cassowary算法计算各个子视图的位置,算出来后将子视图的frame从Layout Engine拷贝出来,接下来的过程就跟手写frame是一样的