我有一个 TableView ,它有一个 tableViewHeader
和一个充满单元格的部分。
在我创建我的 UITableView
之前,我创建了一个名为 topSection
的 View ,它具有 View 的宽度和基于从我的 API 返回的文本的可变高度。
当我加载 View Controller 时,由于 API 调用正在进行中,我可以非常短暂地看到 topSection
(即 UITableView.tableViewHeader
)位于UITableViewCells
。然后,当在我的 didSet
中调用 reloadData
以呈现表格 View 时,一切都会正确布局。
在 UITableView
添加到 UITableView
之前,我没有以任何方式限制 topSection
我还尝试将 topSection
的 top
限制到 tableView
top
但这没有用任何一个。
let listingsTableView = UITableView()
listingsTableView.backgroundColor = .white
listingsTableView.dataSource = self
listingsTableView.delegate = self
listingsTableView.rowHeight = 78
listingsTableView.bounces = false
listingsTableView.allowsSelection = false
listingsTableView.tableHeaderView = topSection
listingsTableView.register(ListingsHeaderView.self, forHeaderFooterViewReuseIdentifier: "HeaderView")
listingsTableView.register(ListingsTableViewCell.self, forCellReuseIdentifier: "ListingsCell")
view.addSubview(listingsTableView)
constrain(listingsTableView, topSection) { tableview, topSection in
tableview.top == tableview.superview!.top
tableview.left == tableview.superview!.left
tableview.right == tableview.superview!.right
tableview.bottom == tableview.superview!.bottom
}
self.listingsTableView = listingsTableView
如有任何帮助,我们将不胜感激。谢谢!
最佳答案
我认为您遇到了一个常见问题 - 表格不会在没有提示的情况下“自动调整”标题 View 的大小。
尝试将此添加到您的代码中(您可能需要更改 View 引用...):
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
sizeHeaderToFit()
}
func sizeHeaderToFit() {
let headerView = theTableView.tableHeaderView!
headerView.setNeedsLayout()
headerView.layoutIfNeeded()
let height = headerView.systemLayoutSizeFitting(UILayoutFittingCompressedSize).height
var frame = headerView.frame
frame.size.height = height
headerView.frame = frame
theTableView.tableHeaderView = headerView
}
关于ios - UITableView 的 tableViewHeader 和 tableViewCells 重叠,直到调用 reloadData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43370526/