- 原文:Auto Layout Guide
- 作者:Apple
- 更新:[email protected]
使用滚动视图时,除了frame,还要明确其内容尺寸。
约束一方涉及滚动视图时,基于另一方的性质,其可能影响滚动视图frame或内容尺寸之一:
-
另一方是同级视图,或父视图:影响滚动视图frame,就像其他任何视图一样;
-
另一方是子视图(内容)。这时,以布局属性区分:
- 边缘或留白:影响滚动视图内容尺寸;
- 宽高,或中心点:影响滚动视图frame;
-
还可以在滚动视图内容与滚动视图同级视图,甚至父视图之间设置约束,营造一种内容在滚动视图中浮动的感觉。
为简化问题,建议将内容全部放入一个容器视图,将其加入滚动视图。通过IB进行如下操作:
-
向场景中加入滚动视图;
-
使用约束定义其frame;
-
添加一个普通视图到滚动视图,将其标记为"容器视图";
-
相对滚动视图固定容器视图的四边,其代表内容区域。
注意
容器视图的尺寸不固定,随着内容的多寡增大和减小。
-
(可选)要避免水平滚动,则需要让内容视图宽度等同于滚动视图;
-
(可选)要避免垂直滚动,则需要让容器视图高度等同于滚动视图;
-
将内容放入容器视图,正常添加约束;
重要
为了定义内容尺寸,上述步骤必须严格执行(第5,6步除外)。内容放入Content View后,系统将计算后者的契合尺寸(Fitting Size),作为滚动视图的内容尺寸适用。计算契合尺寸时,内容之间的约束必须满足如下条件:垂直方向上有完整的约束链:从Content View上边到下边;同理,水平方向上也有完整的约束链,从Content View前边到后边。
没有固有尺寸的内容,则通过约束定义其尺寸。
容器视图高于滚动视图时,垂直滚动自动开启;宽于滚动视图时,水平滚动自动开启。否则默认关闭。