首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dynamic height SwiftUI UIViewControllerRepresentable

Dynamic height SwiftUI UIViewControllerRepresentable
EN

Stack Overflow用户
提问于 2020-10-28 18:13:37
回答 1查看 186关注 0票数 2

我的SwiftUI项目中有一个UITableViewController。UITableView中的单元格数量可以不同。1 cellHeight等于60。如果我不在Section上设置一个.frame(height ),它将勉强显示一个完整的单元格。但由于我不知道将有多少行,所以无法设置.frame(height)。并且设置minHeight/maxHeight将始终使用maxHeight...

有没有办法根据单元格的数量来计算高度,或者我可以用其他方式使TableView()框架动态化?

代码语言:javascript
复制
var body: some View {
        NavigationView {
            Form {
                Section(header: Text("My UIKit Table View")) { TableView() }
                Section(header: Text("My SwiftUI View")) { ContentView() }
            }
        }
    }
EN

回答 1

Stack Overflow用户

发布于 2021-02-05 16:04:17

您可以在Form{}上使用.environment(\.defaultMinListRowHeight, CGFloat),然后根据Itemcount计算高度。

示例:

代码语言:javascript
复制
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中的许多解决方案一样),但一旦正确设置,它就能令人惊讶地工作得很好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64570696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档