如何在SwiftUI中显示完整的列表而无需滚动

5
有没有一种方法可以使列表自动匹配其内容的高度?
我有一个列表,会显示一些项目(事先不知道数量)。默认情况下,当我创建列表时,它的高度不够,只显示1-3个项目,并滚动以显示更多。我想禁用滚动行为。
我尝试将框架高度硬编码为一个我确定适合所有项目的大值,但这并不理想。我也可以从itemHeight * numItems计算出框架高度(如果我将所有项都设置为指定的高度),但在我的情况下,项可以具有不同的高度。
也许有更简单的解决方案?
我查看了文档,也尝试了.fixedSize()、不同的列表样式等等。但这些对我没有作用。

你所说的“list”是指表格视图,对吗?如果是的话,你尝试过 tableViewHeightConstraint.constant = tableView.contentSize.height 吗?别忘了在此之后调用 layoutIfNeeded() - Savca Marin
通过List,我指的是SwiftUI List() https://developer.apple.com/documentation/swiftui/list - Paweł Pela
你需要的是 groupListStyle 吗? - E.Coms
@E.Coms 我试过了,但它仍然在滚动。我已经在那个屏幕上有一个 ScrollView,并且我正在寻找一种方法让列表占据所需的所有高度以显示所有项目而不滚动。 - Paweł Pela
1个回答

3

你应该使用VStack而不是List。这样可以去掉滚动行为,但仍然可以得到垂直组织的单元格。如果你在List中使用ForEach,那么在VStack中也可以使用。


这真是太完美了!顺便提一下,我想要像列表一样有一个分隔符,所以我只是在 VStack 中包装了该项,并在底部添加了一个矩形。这个方法非常有效!谢谢! - Paweł Pela
3
分隔符与分离器非常相似,你可能也想查看一下它们。 - LuLuGaGa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接