Auto Layout生命周期

Auto Layout 拥有一套Layout Engine引擎,由它来主导页面的布局。APP启动后,主线程的Run Loop会一直处于监听状态,当约束发生变化会触发Deffered Layout Pass(延迟布局传递),在里面做容错处理(约束丢失等情况)并把view标识为dirty状态,然后Run Loop再次进入监听阶段。当下一次刷新屏幕动作来临(或调用layoutIfNeeded)时,Layout Engine 会从上到下调用layoutSubviews(),通过Cassowary算法计算各个子视图的位置,算出来后将子视图的frame从Layout Engine拷贝出来,接下来的过程就跟手写frame是一样的了。

你可能感兴趣的:(Auto Layout生命周期)