UITableViewCell中UICollectionView的自动高度

时间:2017-03-28 05:57:06

标签: ios uitableview uicollectionview

我想创建一个由标题文本,描述文本和集合视图组成的单元格。所以我试着像这样创建一个单元格 Custom Cell

我为 title description 添加了top,trailing和superview约束。然后我还将top,bottom,trailing和leading约束添加到UICollectionView

对于我的tableview单元格的自动高度,我覆盖viewWillAppear

override func viewWillAppear(_ animated: Bool) {
    tableView.estimatedRowHeight = 300
    tableView.rowHeight = UITableViewAutomaticDimension
}

在我的自定义单元格类中,我调用了layoutIfNeeded()

public func setRowWithData(model: DataModel) {
    // set your view here
    contentView.layoutIfNeeded()
}

我想要的是,collectionView中的所有单元格都会显示,tableViewCell的高度会适应它。

有什么办法吗?任何帮助,将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用集合视图的内容大小观察者在运行时根据其内容更改集合视图的高度。

要将观察者添加到集合视图,您可以使用以下方法。

self.collectionView.addObserver(self, forKeyPath: "contentSize", options:   NSKeyValueObservingOptions.old.union(NSKeyValueObservingOptions.new), context: nil)

通过使用下面的回调方法,您可以设置集合视图高度运行时。

override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
        self.collectionViewHeight.constant = self.collectionView.contentSize.height
}