UITableViewCell里的UICollectionView的自动高度

我想创build一个由标题文本,描述文本和集合视图组成的单元格。 所以我试图创build一个这样的单元格 自定义单元格

我添加了顶部,尾部,并导致对标题描述的超视图约束。 然后,我还添加顶部,底部,尾随和领先约束到我的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的高度将适应它。

有没有办法做到这一点? 任何帮助,将不胜感激。 谢谢!

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

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

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

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

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