在 UIScrollView 中嵌入 UIStackView 时出现的问题

Posted

技术标签:

【中文标题】在 UIScrollView 中嵌入 UIStackView 时出现的问题【英文标题】:Problems when embed an UIStackView in an UIScrollView 【发布时间】:2018-06-09 15:27:32 【问题描述】:

我正在通过 Interface Builder 设置 ios 应用程序界面。 我有几个水平堆栈视图,都嵌入在一个垂直堆栈视图中。到这里,布局似乎还可以,约束也做得很好。

当我在 UIScrollView 中嵌入垂直堆栈视图时,布局变得非常糟糕。我的布局约束可能有问题,但我真的不知道是什么。下面是两张图片,分别代表 UIScrollView 中嵌入前后的布局:

有没有人知道为什么会发生这种情况? 在此先感谢各位。

更新

安装此约束后:

VerticalStackView.width == ScrollView.width

结果如下:

更新 2

【问题讨论】:

【参考方案1】:

设置以下视图层次结构(屏幕截图)和约束,您应该一切顺利:

ScrollView.top == View.top ScrollView.leading == View.leading ScrollView.bottom == View.bottom ScrollView.trailing == View.trailing ContentView.top == ScrollView.top ContentView.leading == ScrollView.leading ContentView.bottom == ScrollView.bottom ContentView.trailing == ScrollView.trailing ContentView.width == ScrollView.width VerticalStackView.top == ContentView.top + 16 VerticalStackView.leading == ContentView.leading + 16 VerticalStackView.bottom == ContentView.bottom - 16 VerticalStackView.trailing == ContentView.trailing - 16

除了前四个约束中的View,您还可以使用SafeAreaLayoutGuide(取决于您的需要)。

【讨论】:

很遗憾没用。在我的问题更新中查看结果。 我以为您已经设置了基本约束。用所有需要的约束更新了我的答案。 这是正确的方法,但我无法从 UIScrollView 设置尾随 + 16 边距。查看我的更新 您可以使用额外的内容视图(常规UIView)作为滚动视图的子视图,并将您的垂直堆栈视图放在该内容视图中,并带有您喜欢的边距。请参阅我的更新答案。 好的,谢谢,现在我试试。你能向我解释一下为什么约束上存在这些问题吗?

以上是关于在 UIScrollView 中嵌入 UIStackView 时出现的问题的主要内容,如果未能解决你的问题,请参考以下文章

在受限的 UIScrollView 中嵌入 UITableView 和其他 UIView

在 UIScrollView 中嵌入 UIStackView 时出现的问题

在 UIScrollView 中嵌入 UITableView/UICollectionView

UIScrollView 是不是仅适用于嵌入在导航控件中的视图控制器?

从嵌入在 UIScrollView 中的表中推送视图控制器

iPhone:在嵌入式 UITextView 中输入文本时滚动 UIScrollview