我的SwiftUI项目中有一个UITableViewController。 UITableView中的单元格数量可以不同。
1 cellHeight是60。如果我没有在.frame(height )
上设置Section
,它将几乎不会显示一个完整的单元格。但是由于我不知道会有多少行,所以无法设置.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() }
}
}
}
答案 0 :(得分:0)
您可以在 .environment(\.defaultMinListRowHeight, CGFloat)
上使用 Form{}
,然后根据 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 计算高度,因此正确考虑了分隔线和一些间距。 另外,我为 Sections 的标题空间添加了 50。
这有点像 SwiftUI 中的解决方案(就像 SwiftUI 中的许多解决方案一样),但是一旦正确设置,它就会运行得非常好。