翻译@Auto Layout Guide(自动布局指南)


Advanced Auto Layout(自动布局进阶使用)

Working with Scroll Views(滚动视图)

使用滚动视图时,除了frame,还要明确其内容尺寸。

约束一方涉及滚动视图时,基于另一方的性质,其可能影响滚动视图frame或内容尺寸之一:

  • 另一方是同级视图,或父视图:影响滚动视图frame,就像其他任何视图一样;
  • 另一方是子视图(内容)。这时,以布局属性区分:

    • 边缘或留白:影响滚动视图内容尺寸;
    • 宽高,或中心点:影响滚动视图frame;
  • 还可以在滚动视图内容与滚动视图同级视图,甚至父视图之间设置约束,营造一种内容在滚动视图中浮动的感觉。

为简化问题,建议将内容全部放入一个容器视图,将其加入滚动视图。通过IB进行如下操作:

  1. 向场景中加入滚动视图;
  2. 使用约束定义其frame;
  3. 添加一个普通视图到滚动视图,将其标记为”容器视图”;
  4. 相对滚动视图固定容器视图的四边,其代表内容区域。

    注意

    容器视图的尺寸不固定,随着内容的多寡增大和减小。

  5. (可选)要避免水平滚动,则需要让内容视图宽度等同于滚动视图;

  6. (可选)要避免垂直滚动,则需要让容器视图高度等同于滚动视图;
  7. 将内容放入容器视图,正常添加约束;

    重要

    为了定义内容尺寸,上述步骤必须严格执行(第5,6步除外)。内容放入Content View后,系统将计算后者的契合尺寸(Fitting Size),作为滚动视图的内容尺寸适用。计算契合尺寸时,内容之间的约束必须满足如下条件:垂直方向上有完整的约束链:从Content View上边到下边;同理,水平方向上也有完整的约束链,从Content View前边到后边。

    没有固有尺寸的内容,则通过约束定义其尺寸。

    容器视图高于滚动视图时,垂直滚动自动开启;宽于滚动视图时,水平滚动自动开启。否则默认关闭。