【发布时间】:2019-12-22 08:11:51
【问题描述】:
我们在UITableViewCell 中有一个UICollectionView。 UITableViewCell 有一个垂直的stackView,顶部有一个UIView,底部有一个collectionView。
根据我们找到的其他一些答案,我们将UICollectionView 子类化:
class DynamicCollectionView: UICollectionView {
override func reloadData() {
super.reloadData()
invalidateIntrinsicContentSize()
}
override var intrinsicContentSize: CGSize {
return collectionViewLayout.collectionViewContentSize
}
作为概念证明,在 tableView 中,我们设置了 tableViewCell.collectionViewCellCount = indexPath.row
我们在tableViewCell 的collectionViewCellCount 上有一个观察员:
var collectionViewCellCount = 0 {
didSet {
collectionView.reloadData()
}
}
在collectionView 的子类方法上设置时,所有断点都会运行。
再次,为了概念验证,我们将collectionViewCell 的大小设置如下:
if let layout = imageCollectionView.collectionViewLayout as? UICollectionViewFlowLayout {
layout.itemSize = CGSize(width: 60, height: 60)
collectionView 从未明确指定高度。
我们的问题是:
单元格仅在滚动时正确调整大小。最初,collectionView 未显示在 stackView 中。
我们正在制作一些屏幕截图和 gif 图像,但想提出问题。
很高兴尽我们所能澄清更多!
更新:
问题似乎正在发生,因为collectionView 没有明确的高度限制。 cellForItemAt... 仅在存在显式高度约束或滚动时才会调用。但是,添加显式高度约束不会被内容大小覆盖。
【问题讨论】:
-
如果我做对了,你想在 tableView 单元格中显示完整的 collectionView 内容吗?我认为您可以调整表格单元格的大小。
-
帮助我了解您的情况。请
-
@JayrajVala 是的,你说得对,我想在 tableViewCell 中显示完整的 collectionView 内容。我还能如何澄清?
-
也许你可以看看这个答案:stackoverflow.com/questions/55000840/…
-
@ArielSD 然后你可以计算表格单元格的大小。 (表格单元格内集合的顶部 + 底部填充 +(集合单元格大小 * 集合行数))。
标签: ios swift uitableview uicollectionview autolayout