我正在使用自动布局在滚动视图中设置内容。滚动视图中的对象从上到下固定到前一个对象,以便它们位于另一个之下。我在这些对象下方的末尾添加了一个页脚视图。
这里有一个问题:当内容很少时,contentView 将小于屏幕高度,因此页脚视图将出现在屏幕中间的某个位置(这是正常行为)。但我想防止这种情况发生,并使视图停留在底部的某个位置。
换句话说,我想设置一个双重约束,例如:
Put this view below all the objects in the scrollview
AND
keep this view at a distance of max [some number] of the bottom of the screen
以一种始终满足两个约束的方式:
- 如果内容的高度大于屏幕,则向下滚动后视图将显示在底部
- 如果高度较小,则视图将“固定”到屏幕底部,在内容底部和该视图顶部之间留下相对较大的空间
我如何使用自动布局来实现这一点?
只需使用自动布局即可轻松完成...无需任何代码。
关键是使用“内容视图”来保存元素,以及greater-than-or-equal
“底部”元素和“页脚”视图之间的约束。
在此图像中,黄色是主视图,绿色是滚动视图,蓝色是内容视图,标签是灰色的,页脚视图是粉色的。
- 从新的视图控制器开始
- 添加滚动视图,正常约束(我用过
20
一直围绕,所以我们可以看到框架)
- add a
UIView
到滚动视图 - 这将是我们的“内容视图”
- 约束 contentView 顶部/底部/前导/尾随全部等于
0
到滚动视图
- 限制 contentView 的宽度和高度等于滚动视图
- 添加你的元素 - 这里我使用了 3 个标签
- constrain the labels as usual... I used:
- LabelA - 顶部/前导/尾随全部位于
20
, 到 LabelB 的垂直间距60
- 标签B - 前导/尾随于
20
, 到 LabelC 的垂直间距60
- LabelC - 领先/落后于
20
- LabelC 也设置为
Number of Lines: 0
所以它将扩展为多行文本
- Add a
UIView
作为“页脚视图”(我在其中贴了一个标签)
- 约束页脚查看前导/尾随/底部全部位于
20
(这样我们就可以看到框架了)
- 要么在 footerView 上设置高度约束,要么使用其内容来约束其高度
- 从 LabelC 到 footerView 添加垂直间距约束,并将其设置为
>= 40
- 最后一步,将 contentView 的 Height 约束更改为
Priority: 250
现在,当您扩展/收缩 LabelC 的高度时,footerView 将保持不变at least40 点的垂直空间。当 LabelC 变得足够大以将 footerView“推”到底部下方时,scrollView 将变得可滚动。
Results:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)