gpt4 book ai didi

ios - 如何定义适当的约束以使 ScrollView 有效工作

转载 作者:行者123 更新时间:2023-11-30 11:28:09 24 4
gpt4 key购买 nike

我的 Storyboard布局很简单,如附图所示。我假设正文可以从单行跨越到多行。考虑到多行的情况,我希望内容能够滚动,以便按钮可以单击。但是,由于我设置的约束, ScrollView 不会滚动。为了达到预期的效果,我应该改变哪些约束?谢谢。

constraints defined

最佳答案

使用UIScrollView的关键:您必须有一个约束“链”,以允许自动布局确定 ScrollView 的.contentSize

一步一步(我喜欢在布局期间设置背景颜色,以便轻松查看元素的边界/框架)...

UIScrollView (哈密瓜色)添加到 View Controller 中,并将其周围限制为 20 点(这样我们就可以看到它在哪里):

enter image description here

添加一个UIView作为您的ContentView(草莓色)作为 ScrollView 的 subview 。为 ScrollView 提供相同的高度和宽度约束,并将顶部/前导/尾随/底部约束全部设置为0:

enter image description here

添加您的标题 UILabel(黄色背景)。约束它顶部:30/前导:50/尾随:50。添加您的 Body UILabel (黄色背景)。将其顶部限制为标题标签的底部(我使用 200),以及 Leading: 10/Trailing: 10。添加您的UIButton(浅灰色背景)。将其顶部约束到 Body 标签的底部(我使用 50),并且 Leading: 50/Trailing: 50:

enter image description here

到目前为止,没有什么特别的,你不会得到任何滚动......

接下来,将另一个底部约束0添加到ContentView,并将第一个底部约束更改为为 >= 0 并将新底部约束的优先级设置为 250:

enter image description here

这将(经过几个步骤)允许 ContentView 根据其内容展开/折叠,并控制 ScrollView 的 .contentSize

下一步是告诉 Button 确定 ContentView 的高度 - 因此向按钮添加 30 的底部约束(这将等于我们为标题标签指定的 Top: 30):

enter image description here

当然,这不完全是我们想要的。它拉伸(stretch)了按钮的高度,因为我们在 ContentView 上设置了高度约束。所以...从ContentView删除高度约束:

enter image description here

结果是 ContentView 高度将缩小以适合按钮底部下方 30 磅。

如果您向 Body 标签添加更多文本(假设它设置为 Number of Lines; 0),您将看到 Body code> 标签展开并“按下”按钮,该按钮又“按下”ContentView 的底部:

enter image description here

如果您向 Body 添加足够的文本以按下 ScrollView 底部下方的按钮(无论是在 IB 中还是通过代码),它现在将垂直滚动。

希望这是清楚的...如果您有任何问题,请询问。

关于ios - 如何定义适当的约束以使 ScrollView 有效工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50529081/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com