UICollectionViewCell 在 sizeForItemAt 中不可用

Posted

技术标签:

【中文标题】UICollectionViewCell 在 sizeForItemAt 中不可用【英文标题】:UICollectionViewCell unavailable in sizeForItemAt 【发布时间】:2016-12-02 18:15:28 【问题描述】:

我正在尝试为集合视图中的单元格大小更改设置动画。

在“didSelectItemAt”中:

            collectionView.performBatchUpdates(
                collectionView.collectionViewLayout.invalidateLayout()
                let cell = collectionView.cellForItem(at: indexPath)
                let frame = cell?.frame
                cell?.frame = CGRect(x: (frame?.origin.x)!, y: (frame?.origin.y)!, width: (frame?.size.width)! + 100, height: (frame?.size.height)!)
            , completion: nil)

这应该设置单元格的大小,但没有任何反应。再次单击单元格,我看到单元格的大小保持为 size+100(忽略它每次都会增长的事实 - 只是试图让它立即工作)。

在 sizeForItemAt 函数中,任何检索单元格的尝试都返回 nil。

collectionView.numberOfItems(inSection: indexPath.section)

返回 3,但是

collectionView.cellForItem(at: indexPath)

返回零。为什么?

如何在 sizeForItemAt 范围内获取具有给定索引路径的集合视图的单元格:???

【问题讨论】:

【参考方案1】:

显然 sizeForItemAt 在 cellForItem 之前被调用。

【讨论】:

【参考方案2】:

确定 indexPath.row

【讨论】:

是的,肯定是 0。我遇到的问题是,我在第一个 .reloadData() 运行它的过程并且所有代表都被调用之前查看该代码的执行。换句话说,该表尚未填充数据。

以上是关于UICollectionViewCell 在 sizeForItemAt 中不可用的主要内容,如果未能解决你的问题,请参考以下文章

在 UICollectionViewCell 中更新 UITableView

如何在 UICollectionViewCell 中添加 UICollectionView?

如何在 UICollectionViewCell 上设置 UILabel?

UICollectionViewCell 边框/阴影

如何在 iOS 7 中刷新 UICollectionViewCell?

UICollectionviewcell 中未显示数据?