我有一个设计,其中 UITableView 与其他内容一起在 UIScrollView 中,并且内容与表格数据一起滚动。这意味着,该表格已禁用滚动并被拉伸至全尺寸。
我正在使用自动布局并且表格具有高度约束,设置为一些默认值。
然后我覆盖了 viewWillLayoutSubviews 方法:
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
if (self.itemTableView.contentSize.height > 0) {
self.itemTableViewHeightConstraint.constant = self.itemTableView.contentSize.height
}
}
有了这个方法,当我在从 REST 加载数据后调用 self.itemTableView.reloadData() 时,高度约束被设置为表格内容高度,这很棒。
这曾经在许多项目中对我有用,但由于某种原因,它在用 swift 4 编写的最新项目中不起作用。有什么改变吗?为什么 tableView reloadData() 方法不调用 viewWillLayoutSubviews()?
问题是 tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) 在返回行之前没有调用 self.view.setNeedsLayout() 。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句