首页 > 解决方案 > swift4:UITableViewHeight 内容高度获取表格的固定高度

问题描述

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

标签: iosswiftuitableview

解决方案


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;

推荐阅读