什么时候更新 UITableView 高度 NSLayoutConstraint 最合适
Posted
技术标签:
【中文标题】什么时候更新 UITableView 高度 NSLayoutConstraint 最合适【英文标题】:When is it most appropriate to update UITableView height NSLayoutConstraint 【发布时间】: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?
【问题讨论】:
【参考方案1】:找到了!答案就在这里:Height adjusted UITableView using Auto Layout
高度约束需要是低优先级,它起作用了。
我在重新加载表后和viewDidLayoutSubviews
中更新了约束 both,如问题中所述
【讨论】:
以上是关于什么时候更新 UITableView 高度 NSLayoutConstraint 最合适的主要内容,如果未能解决你的问题,请参考以下文章
如何在UITableViewCell内部更新UITableView的高度约束