滚动视图中的堆栈视图不滚动

Stack view within a scroll view doesn't scroll

在过去的 2 天里,我一直在为这个问题苦恼。我要找的结构如下:

  1. 我想让滚动视图占据整个屏幕,以便它可以垂直滚动。
  2. 我希望将图像视图添加到滚动视图的顶部,并将垂直堆栈视图添加到下方。

关键是垂直堆栈视图根据内容动态增加其高度。

首先,我只是尝试添加没有图像视图的堆栈视图,只是为了测试动态可滚动高度。按照 :

的 SO 回答
  1. 添加了带有 0, 0, 0, 0 约束的滚动视图。
  2. 将堆栈视图添加到滚动视图。将约束设置为 Content Layout Guide、0、0、0、0 约束。
  3. 将堆栈视图的宽度设置为与滚动视图相等。

这给了我一个约束错误,说我需要为滚动视图设置一个固定的高度。添加约束不会让我滚动。我尝试将堆栈视图直接固定到滚动视图,而不是 Content Layout Guide,但仍然不起作用。

我在滚动视图上遵循了 Apple 的 documentation,并在将堆栈视图固定到内容视图之前在滚动视图中添加了一个内容视图:

这也不会滚动。

堆栈视图的分布设置为等间距或填充。

请帮忙。

答案对我有用。

添加 scroll view 并将四个边固定到 safe area。确保约束的值为 0。

scrollview 内添加 stackview 并将四个边固定到 scrollview,约束值为 0。

设置 stack view's 宽度等于 scroll view's 宽度。

stackview 内添加尽可能多的视图。

要测试滚动是否有效,请为 stackview 内的视图设置固定高度,以确保 scrollview 具有可滚动的高度。然后选择 stackview,用两根手指在 viewcontroller 内拖动。 stackview 应该在 scrollview 内滚动。

约束是这样设置的: