【发布时间】:2015-10-01 11:45:20
【问题描述】:
TL;DR:UITableView contentSize 何时正确?
要更新我的表格高度约束,我使用以下函数:
func adjustHeightOfTableview()
{
self.myTableView.layoutIfNeeded()
let newHeight = self.myTableView.contentSize.height
self.tableHeightConstraint.constant = newHeight
self.view.setNeedsUpdateConstraints()
}
我尝试了这两种解决方案:
在
viewDidLayoutSubviews中调用adjustHeightOfTableview
override func viewDidLayoutSubviews()
{
super.viewDidLayoutSubviews()
self.adjustHeightOfTableview()
}
结果:表格根本没有出现在屏幕上。我想这是因为第一次调用viewDidLayoutSubviews 时内容大小为 0。由于表格高度设置为0,因此不会创建单元格并且不会再次调用viewDidLayoutSubviews
重新加载表后调用
adjustHeightOfTableview(我有扩展名)
extension UITableView
{
func reloadData(completion: ()->()) {
UIView.animateWithDuration(0, animations: { self.reloadData() })
{ _ in completion() }
}
}
//in my class:
self.relatedTableView.reloadData()
{
self.adjustHeightOfTableview()
}
结果:桌子太高了。 contentSize 错误??
底线:如何以及在何处最好更新 UITableView 高度 NSLayoutConstraint?
【问题讨论】:
标签: ios swift uitableview autolayout nslayoutconstraint