【问题标题】:Stack view within a scroll view doesn't scroll滚动视图中的堆栈视图不滚动
【发布时间】:2020-12-05 22:58:01
【问题描述】:

在过去的 2 天里,我一直很难解决这个问题。我要找的结构如下:

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

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

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

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

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

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

这也不滚动。

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

请帮忙。

【问题讨论】:

  • 您是否尝试过为stackview 中的所有视图设置固定高度约束?例如,将所有视图的高度设置为 300,并检查滚动视图是否使用该设置滚动。
  • 我试过了
  • 您的 contentView 尾随约束应该等于内容布局指南尾随 0 常量。为什么要加一个常数 414?
  • 那是自动添加的。但这只是与宽度有关,不会影响垂直滚动,对吧?
  • 其实……你需要去掉 contentView.bottom = frame layout guide.bottom。这很可能是这里的问题。

标签: ios swift uiscrollview uistackview


【解决方案1】:

This 回答确实对我有用。

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

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

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

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

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

这是设置约束的方式:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-09
    相关资源
    最近更新 更多