Swift - ScrollView 中的 StackView 不滚动
Posted
技术标签:
【中文标题】Swift - ScrollView 中的 StackView 不滚动【英文标题】:Swift - StackView in ScrollView doesn't scroll 【发布时间】:2019-07-22 08:27:12 【问题描述】:我正在尝试在滚动视图中创建一个可滚动的堆栈视图,但它不起作用。
我已经建立了这样的结构:
如果看不到图片,这是结构: UIScrollView 在所有 4 个方向上都限制为超级视图 UIStackView(限制为所有 4 个方向的滚动视图 + 等宽) 图像集合视图(不受限制) UIStackView(不受约束) 标签堆栈(不受限制)
它不滚动,谁能看到我错过了什么?
【问题讨论】:
尝试使用约束修复图像集合视图的虚拟高度/宽度,看看是否是问题所在。 柏林老板您好!我试了一下,出现了一些奇怪的行为。视图就像在闪烁,但没有滚动。 如果可能,创建一个新项目,将此设计移入其中,捆绑它,上传并与我们分享链接。 好主意!谢谢,希望不会再遇到更多麻烦;) 【参考方案1】:您应该在ScrollView
中设置ContentView
,并使用以下约束:
ScrollView 的约束:
通往superView 跟踪到 superView 顶部到超级视图从底部到超级视图
这些约束的常量是 0
ContentView 的约束:
通往superView 跟踪到 superView 顶部到超级视图从底部到超级视图
与 ViewController 的 View
等高(位于视图层次结构的顶部)
与 ViewController 的 View
等宽
注意:您应该将 ContentView 的高度约束的优先级设置为 700 等(低于默认高度值)
注意:
您的 stackViews 和 collectionView 必须具有可滚动的高度。
我希望它有效。
享受吧。
【讨论】:
您好 Emre,感谢您的回答!我的 ScrollView 约束与您列出的一样。在我的 ContentView 中,我忘记了 equalHeight。所以我将它设置为相等的高度(到层次结构的顶视图)。然后我收到一个警告,collectionView 需要约束:Y 高度位置。所以我为 collectionView 添加了高度约束,但它没有用。然后我为“内部堆栈视图”添加了高度约束,但这也不起作用。我错过了什么,您需要查看更多代码/约束吗?在此先感谢,卡斯帕 如果滚动视图必须垂直滚动,则不应设置 ContentView 的高度。应该是从里面的数据推导出来的。 (即,每个视图应放下其高度,系统将计算最终高度。)。设置高度实际上会创建和冲突,然后根据优先级打破它。 有趣的是,当我有一个图像视图而不是集合视图时,我的代码/约束实际上已经起作用了。但是当我添加集合视图时它不起作用...... @CoderOgden 这意味着自动布局无法计算 UICollectionViews 的大小。这就是我要求现在设置高度和宽度约束并检查是否滚动的原因。将高度和宽度设置为很大的数字,以便视图溢出 我明白了!现在它起作用了。我没有限制堆栈视图的高度,而是设置我的 collectionView 的高度。谢谢你们!以上是关于Swift - ScrollView 中的 StackView 不滚动的主要内容,如果未能解决你的问题,请参考以下文章
Swift - ScrollView 中的 StackView 不滚动
SWIFT - ScrollView 内的 WKWebView 中的 HTML 滚动事件
如何在 swift 中增加 ScrollView 中的 UITableView 高度