我有UITableView
设置为不启用滚动,它存在于UIScrollView
中。我这样做是因为设计规范需要看起来像tableView
的东西。具有动态高度的TableView
单元格我使用
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return UITableViewAutomaticDimension
}
现在我从API和重新加载TableView之前获取数据。
我更新了tableView
和ScrollView
的高度限制。但身高不会得到更新。我使用下面的代码
self.view.layoutIfNeeded()
tvHeightConstraint.constant = tvPrdtDetail.contentSize.height
svHeightConstraint.constant = tvPrdtDetail.contentSize.height + 8
此处tvHeightConstraint
和svHeightConstraint
是tableView
和ScrollView
的高度限制
@IBOutlet weak var tvHeightConstraint: NSLayoutConstraint!
@IBOutlet weak var svHeightConstraint: NSLayoutConstraint!
当我打印TableView
ContentSize
print("Content Size: \(tvPrdtDetail.contentSize.height)")
请帮帮我。提前谢谢。
答案 0 :(得分:0)
重新排序,因为在更新约束的常量
之后应该调用layoutIfNeeded
tvHeightConstraint.constant = tvPrdtDetail.contentSize.height
svHeightConstraint.constant = tvPrdtDetail.contentSize.height + 8 // remove this
self.view.layoutIfNeeded()
也不需要第二行,就好像你在滚动视图中从上到下正确挂钩约束更新表格的高度约束将更新滚动视图
修改强>
1-给表高度约束说3000(一些大数字)后跟self.view.layoutIfNeeded()
2-重新加载表
3-获取最后一个单元格的y帧
4-将其分配给高度约束
5-布局视图
获取数据后执行此操作
答案 1 :(得分:0)
尝试这个希望,这样就行了。当需要约束时应该更新,并且override updateConstraints
函数
self.layoutIfNeeded()
override public func updateConstraints() {
super.updateConstraints()
tvHeightConstraint.constant = tvPrdtDetail.contentSize.height
svHeightConstraint.constant = tvPrdtDetail.contentSize.height + 8
}