TL; DR:当UITableView contentSize正确时?
要更新我的表高度约束,我使用以下函数:
func adjustHeightOfTableview()
{
self.myTableView.layoutIfNeeded()
let newHeight = self.myTableView.contentSize.height
self.tableHeightConstraint.constant = newHeight
self.view.setNeedsUpdateConstraints()
}
我试过这两个解决方案:
在
中呼叫adjustHeightOfTableview
viewDidLayoutSubviews
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()
}
结果:桌子要高了。错误的内容大小?
底线:更新UITableView高度NSLayoutConstraint的方式和位置最佳?
答案 0 :(得分:3)
高度约束需要为低优先级并且有效。
我在重新加载表后更新了两者约束,并在viewDidLayoutSubviews
中更新问题