我想创建一个由标题文本,描述文本和集合视图组成的单元格。所以我试着像这样创建一个单元格
我为 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
的高度会适应它。
有什么办法吗?任何帮助,将不胜感激。谢谢!
答案 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
}