在 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