我的SwiftUI项目中有一个UITableViewController。UITableView中的单元格数量可以不同。1 cellHeight等于60。如果我不在Section上设置一个.frame(height ),它将勉强显示一个完整的单元格。但由于我不知道将有多少行,所以无法设置.frame(height)。并且设置minHeight/maxHeight将始终使用maxHeight...
有没有办法根据单元格的数量来计算高度,或者我可以用其他方式使TableView()框架动态化?
var body: some View {
NavigationView {
Form {
Section(header: Text("My UIKit Table View")) { TableView() }
Section(header: Text("My SwiftUI View")) { ContentView() }
}
}
}发布于 2021-02-05 16:04:17
您可以在Form{}上使用.environment(\.defaultMinListRowHeight, CGFloat),然后根据Itemcount计算高度。
示例:
var body: some View {
NavigationView {
Form {
Section(header: Text("My UIKit Table View")) { TableView() }
Section(header: Text("My SwiftUI View")) { ContentView() }
}
.environment(\.defaultMinListRowHeight, 40)
.frame(height: (50 * TableViewCount) + (50 * ContentViewCount)) + 50 * SectionHeaderCount)
}
}这还需要进一步的定制。在我的示例中,listRowHeight是40,但是我用50计算高度,所以分隔符和一些间距被正确地考虑在内。此外,我为节的标题空间添加了50。
这是一种老生常谈的解决方案(就像SwiftUI中的许多解决方案一样),但一旦正确设置,它就能令人惊讶地工作得很好。
https://stackoverflow.com/questions/64570696
复制相似问题