如何为滚动视图定义适当的约束以有效工作
How to define proper constraints for scrollview to work effectively
我的故事板布局很简单,如附图所示。我假设正文可以从一行跨越到多行。考虑到多行的情况,我希望内容滚动以便按钮可以点击。但是,根据我设置的约束,滚动视图不会滚动。为了获得预期的效果,我应该更改哪些约束?谢谢。
为了使您的约束适合滚动视图,您必须通过某些方式follow.please找到以下步骤。
1.Add 滚动视图到超级 view.After 添加滚动视图 添加子视图到滚动视图 如图所示。
此视图将具有与滚动视图相同的 x、y 坐标以及相同的高度和宽度。
请参考下图以了解层次结构。
您会看到红色警告,因为我们还没有添加任何约束。
- 现在是应用一些约束的时候了。
参考下面的图片并添加顶部、底部、前导和尾随到滚动视图。
现在向滚动视图的子视图添加相同的顶部、底部、前导和尾部。参考下图。
现在是真正的 trick.Hold 滚动和查看合二为一,并给它们相等的宽度,相等的高度约束,如下图所示。
您的约束几乎 set.now 取决于您的包含拉伸视图。
当您在点击更新约束后增加视图的高度时。
你需要做的最后一件事是改变滚动视图的底部约束 value.It 将是一些负面的 value.Replace 它 0.follow 下面的截图
如果有效请更新
使用UIScrollView
的关键:你必须有一个"chain"的约束来允许auto-layout决定滚动视图的.contentSize
。
Step-by-step(我喜欢在布局时设置背景颜色,这样可以很容易地看到元素的边界/框架)...
向您的视图控制器添加一个 UIScrollView
(哈密瓜色),并将其始终限制为 20 磅(以便我们可以看到它的位置):
添加一个UIView
作为你的ContentView
(草莓色)作为滚动视图的子视图。为滚动视图赋予相等的高度和宽度约束,并将顶部/前导/尾部/底部约束全部设置为 0
:
添加您的 Title
UILabel
(黄色背景)。约束它Top: 30 / Leading: 50 / Trailing: 50
。添加您的 Body
UILabel
(黄色背景)。将其顶部限制在标题标签的底部(我使用 200
)和 Leading: 10 / Trailing: 10
。添加您的 UIButton
(浅灰色背景)。将其顶部限制在 Body 标签的底部(我使用 50
),并且 Leading: 50 / Trailing: 50
:
到目前为止,没有什么特别的,你不会得到任何滚动...
接下来,将另一个的0
的Bottom约束添加到ContentView
,并改变第一个Bottom约束为 >= 0
并将新底部约束的优先级设置为 250
:
这将(再执行几个步骤后)允许 ContentView
根据其内容展开/折叠,以及控制滚动视图的 .contentSize
。
下一步是告诉 Button
确定 ContentView
的高度 - 因此向按钮添加 30
的底部约束(这将等于Top: 30
我们给标题标签了):
当然,这不完全是我们想要的。它拉伸了按钮的高度,因为我们在 ContentView
上设置了 高度约束 。所以... 从 ContentView
:
中删除 高度限制
结果是 ContentView
高度将缩小以适合按钮底部以下 30 磅。
如果您向 Body
标签添加更多文本(假设它设置为 Number of Lines; 0
),您将看到 Body
标签展开并且 "push down"按钮,依次 "pushes down" ContentView
的底部:
如果您向 Body
添加足够多的文本来推动滚动视图底部下方的按钮 - 无论是在 IB 中还是通过代码 - 它现在将垂直滚动。
希望说的很清楚...如果您有任何问题,请询问。
我的故事板布局很简单,如附图所示。我假设正文可以从一行跨越到多行。考虑到多行的情况,我希望内容滚动以便按钮可以点击。但是,根据我设置的约束,滚动视图不会滚动。为了获得预期的效果,我应该更改哪些约束?谢谢。
为了使您的约束适合滚动视图,您必须通过某些方式follow.please找到以下步骤。
1.Add 滚动视图到超级 view.After 添加滚动视图 添加子视图到滚动视图 如图所示。 此视图将具有与滚动视图相同的 x、y 坐标以及相同的高度和宽度。 请参考下图以了解层次结构。
您会看到红色警告,因为我们还没有添加任何约束。
- 现在是应用一些约束的时候了。 参考下面的图片并添加顶部、底部、前导和尾随到滚动视图。
现在向滚动视图的子视图添加相同的顶部、底部、前导和尾部。参考下图。
现在是真正的 trick.Hold 滚动和查看合二为一,并给它们相等的宽度,相等的高度约束,如下图所示。
您的约束几乎 set.now 取决于您的包含拉伸视图。 当您在点击更新约束后增加视图的高度时。
你需要做的最后一件事是改变滚动视图的底部约束 value.It 将是一些负面的 value.Replace 它 0.follow 下面的截图
如果有效请更新
使用UIScrollView
的关键:你必须有一个"chain"的约束来允许auto-layout决定滚动视图的.contentSize
。
Step-by-step(我喜欢在布局时设置背景颜色,这样可以很容易地看到元素的边界/框架)...
向您的视图控制器添加一个 UIScrollView
(哈密瓜色),并将其始终限制为 20 磅(以便我们可以看到它的位置):
添加一个UIView
作为你的ContentView
(草莓色)作为滚动视图的子视图。为滚动视图赋予相等的高度和宽度约束,并将顶部/前导/尾部/底部约束全部设置为 0
:
添加您的 Title
UILabel
(黄色背景)。约束它Top: 30 / Leading: 50 / Trailing: 50
。添加您的 Body
UILabel
(黄色背景)。将其顶部限制在标题标签的底部(我使用 200
)和 Leading: 10 / Trailing: 10
。添加您的 UIButton
(浅灰色背景)。将其顶部限制在 Body 标签的底部(我使用 50
),并且 Leading: 50 / Trailing: 50
:
到目前为止,没有什么特别的,你不会得到任何滚动...
接下来,将另一个的0
的Bottom约束添加到ContentView
,并改变第一个Bottom约束为 >= 0
并将新底部约束的优先级设置为 250
:
这将(再执行几个步骤后)允许 ContentView
根据其内容展开/折叠,以及控制滚动视图的 .contentSize
。
下一步是告诉 Button
确定 ContentView
的高度 - 因此向按钮添加 30
的底部约束(这将等于Top: 30
我们给标题标签了):
当然,这不完全是我们想要的。它拉伸了按钮的高度,因为我们在 ContentView
上设置了 高度约束 。所以... 从 ContentView
:
结果是 ContentView
高度将缩小以适合按钮底部以下 30 磅。
如果您向 Body
标签添加更多文本(假设它设置为 Number of Lines; 0
),您将看到 Body
标签展开并且 "push down"按钮,依次 "pushes down" ContentView
的底部:
如果您向 Body
添加足够多的文本来推动滚动视图底部下方的按钮 - 无论是在 IB 中还是通过代码 - 它现在将垂直滚动。
希望说的很清楚...如果您有任何问题,请询问。