如果有足够的数据,我一直在尝试将TableView的高度更改为全屏,否则使高度等于内容(因此无需滚动)。在下面的图片中,tableview的高度应在最后一个单元格处结束,但是您可以看到它在视图的底部。我不希望圆形视图的高度发生变化。 (我知道我的表视图的底部锚设置不正确,但是我的想法已经用完了
Here是当前输出
我尝试更改锚点的优先级,以及其他各种操作,但均未获得理想的结果。我尝试在tableview.reloadData()之后添加以下代码,但是这导致tableview的高度锚点太大,导致高度超出屏幕。
tableView.heightAnchor.constraint(equalToConstant: self.tableView.contentSize.height).isActive = true
任何帮助将不胜感激!谢谢
private func setupConstraint() {
view.addSubview(tableView)
view.addSubview(attendanceCircleView)
NSLayoutConstraint.activate([
attendanceCircleView.topAnchor.constraint(equalTo: view.topAnchor, constant: 10),
attendanceCircleView.widthAnchor.constraint(equalTo: view.widthAnchor, multiplier: 0.95),
attendanceCircleView.centerXAnchor.constraint(equalTo: view.centerXAnchor),
attendanceCircleView.heightAnchor.constraint(equalToConstant: 240),
tableView.topAnchor.constraint(equalTo: attendanceCircleView.bottomAnchor, constant: 10),
tableView.widthAnchor.constraint(equalTo: view.widthAnchor, multiplier: 0.95),
tableView.centerXAnchor.constraint(equalTo: view.centerXAnchor),
tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: -20)
])
}
答案 0 :(得分:1)
您可以使用以下代码。
@IBOutlet weak var tableViewHeightConstraint: NSLayoutConstraint! // create a height Constraint of tableview
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.reloadTableView()
}
func updateTableiewConstraints() {
DispatchQueue.main.asyncAfter(deadline: .now() + 0.01, execute: {
let height : CGFloat = self.tableView.contentSize.height
self.tableViewHeightConstraint.constant = height
UIView.animate(withDuration: 0.1, animations: {
self.view.layoutIfNeeded()
})
})
}
注意: 1.设置tableview的顶部约束应大于0。
答案 1 :(得分:0)
我通过以下操作解决了我的问题。
let tableViewBottomAnchor = tableView.bottomAnchor.constraint(equalTo:view.bottomAnchor, constant: -20)
tableViewBottomAnchor.priority = .defaultLow
tableViewBottomAnchor.isActive = true
并在调用tableView.reloadData()
let tableViewMaxHeight = self.tableView.frame.height
let contentTableViewHeight = self.tableView.contentSize.height
let height = tableViewMaxHeight <= contentTableViewHeight ? tableViewMaxHeight: contentTableViewHeight
self.tableView.heightAnchor.constraint(equalToConstant:height).isActive = true
UIView.animate(withDuration: 0.1, animations: {
self.view.layoutIfNeeded()
})