AutoLayout原理

视图更新和渲染循环(render loop)有关,工作流程如下图:


渲染循环.png

主要分三步:

  1. 更新约束,从下往上,最终到达Window,
  2. 布局,从上往下
  3. 展示

每一步都有对应的api


对应api.png

在iOS应用中,Window一般为顶级视图,每个window中都有一个布局引擎(engine),当往视图添加约束的时候,实际上是在引擎中添加了一系列等式,引擎负责计算出这些等式中所有变量的值,最终得出视图的约束。


engine.png
engine1.png

在engine对约束计算完毕后,就会告知该视图,该视图则会通知它的上级视图,我需要更新约束了,这个过程通常需要调用

- (void)setNeedsLayout;

在进入layout阶段后,会调用

- (void)layoutSubviews;

在engine中,多个不同块的布局互不干扰,复杂度呈线性增加。
The engine is a layout cache and dependency tracker.

你可能感兴趣的:(AutoLayout原理)