swift4:UITableViewHeight内容高度获得表的固定高度

时间:2018-05-07 14:21:29

标签: ios swift uitableview

我使用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,但我不知道我的代码有什么问题。 有什么帮助吗?

1 个答案:

答案 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;