gpt4 book ai didi

ios - 如何在 UITableViewCell 内实现动态大小的 UICollectionView?

转载 作者:行者123 更新时间:2023-11-29 05:31:21 25 4
gpt4 key购买 nike

我们在 UITableViewCell 内部有一个 UICollectionViewUITableViewCell 有一个垂直的 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

我们在 tableViewCellcollectionViewCellCount 上有一个观察者:

    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... 仅在存在显式高度限制或滚动时调用。但是,添加显式高度约束不会被内容大小覆盖。

最佳答案

您是否知道 UICollectionView 中的 reloadData 正在被调用(听起来像是这样,如果断点被击中)?如果它仅在滚动时大小正确,我的猜测是它与可重复使用的单元格有关。

如果您尝试通过向所有集合单元格发送 needUpdate 来强制单元格重新显示,该怎么办?我不认为这是必要的,因为 reloadData,但也许在 reloadData 之后类似的事情可以帮助您缩小正在发生的事情的范围:

        for cell in collectionView.visibleCells {
cell.setNeedsDisplay()
}

关于ios - 如何在 UITableViewCell 内实现动态大小的 UICollectionView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57517236/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com