我使用swift4
,我有桌面视图和桌面视图高度的插座:
@IBOutlet var commentsTableView: UITableView!
@IBOutlet var commentTableHeight: NSLayoutConstraint!
表格返回每个单元格的动态高度
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return UITableViewAutomaticDimension
}
我想在从API
获取数据时更改表格视图高度:
//// Consum APIs
func getProductDetails() {
API.getProductDetails(category_id: String(self.passed_category_id)) {( error: Error?, success: Bool, products: ProductDetails) in
if success {
self.product = products
self.setProductDetailsValue()
} else {
}
}
}
func setProductDetailsValue() {
if(self.product.comments.count > 0) {
self.commentsTableView.isHidden = false
self.commentsTableView.reloadData()
self.commentsTableView.layoutIfNeeded()
self.commentTableHeight.constant = self.getTableViewHeight(tableView: self.commentsTableView)
print("comment table height: ", self.commentTableHeight.constant, self.getTableViewHeight(tableView: self.commentsTableView))
} else {
self.commentsTableView.isHidden = true
}
}
func getTableViewHeight(tableView: UITableView)-> CGFloat {
tableView.layoutIfNeeded()
return tableView.contentSize.height
}
print语句打印如下值:
comment table height: 352.0 624.333324432373
表示self.commentTableHeight.constant
取不同的值。我发现每次应用程序给每个单元格44 pt,但我不知道我的代码有什么问题。
有什么帮助吗?
答案 0 :(得分:0)
更改常量
后,您必须重新布局view
self.commentTableHeight.constant = self.getTableViewHeight(tableView: self.commentsTableView)
self.view.layoutIfNeeded()
print("comment table height: ", self.commentTableHeight.constant, self.getTableViewHeight(tableView: self.commentsTableView))
//
你必须把它放在viewDidLoad
tableView.estimatedRowHeight = 200; // your estimated height
tableView.rowHeight = UITableViewAutomaticDimension;