为了解决这个问题,我移动了我的
ViewDidLayoutSubviews()。
代码转换为新的自定义方法,并在每次完成
可配置视图()
方法
func calcTotalHeight() {
for view in contentView.subviews {
self.contentRect = self.contentRect.union(view.frame)
}
contentHeightConstraint.constant = self.contentRect.height
contentView.needsUpdateConstraints()
}
func configureTableView() {
//1. Set Table Row dimensions
postTableView.rowHeight = UITableViewAutomaticDimension
postTableView.estimatedRowHeight = 375
//2. Update Table View and reload contentview
postTableView.reloadData()
contentView.layoutIfNeeded()
//3. Update Table View Height
self.postTableHeightConstraint.constant = postTableView.contentSize.height
//4. Reload ContentView and Recalculate New Height of Content View
contentView.layoutSubviews()
calcTotalHeight()
}
不是最有说服力的解决方案,但它是有效的,并且在加载时不会产生太多开销。
它也是
重要的
指出reloaddata、layoutifneeded和layoutSubview相对于其他代码的顺序在实现这一点上起着关键作用。