调整单个 UICollectionViewCell 的大小,有可能吗?

Posted

技术标签:

【中文标题】调整单个 UICollectionViewCell 的大小,有可能吗?【英文标题】:Resize a single UICollectionViewCell, Is it possible? 【发布时间】:2015-01-26 02:48:08 【问题描述】:

我想知道是否可以调整单个 UICollectionViewCell 的大小? 我一直在研究 layoutAttributesForItemAtIndexPath 和 layoutAttributesForElementsInRect 之类的东西,但它们都需要您手动设置每个项目的框架,这变得更加麻烦,因为一旦我调整单元格大小,我就必须再次计算框架。我的计划是能够选择一个单元格并将其展开以适应屏幕的宽度,然后将所有其他单元格向下推,同时其他单元格保持其列和行。

有人做到了吗?

谢谢

【问题讨论】:

这是你的布局还是内置的流布局? 我开始子分类,UICollectionFlowLayout 好吧,你不需要。流布局有一个委托。您可以将物品制作成任何您想要的尺寸。只需执行sizeForItemAtIndexPath: 【参考方案1】:
var selectedIndexPath: NSIndexPath?

// MARK: - UICollectionViewDelegate

override func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) 
    selectedIndexPath = indexPath
    collectionView.performBatchUpdates(nil, completion: nil)


// MARK: - UICollectionViewDelegateFlowLayout

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize 
    var size = CGSize(width: 100, height: 100)

    if selectedIndexPath == indexPath 
        size.width = CGRectGetWidth(collectionView.frame)
    
    return size

是的,就是这么简单。

(虽然这并不能回答这个问题,如果这是一个好主意。你会在实施它时看到;)

【讨论】:

这很好,但有没有办法让不再选择的单元格也为它们的调整大小设置动画?它们只是立即崩溃,与膨胀的相比,这是不和谐的。

以上是关于调整单个 UICollectionViewCell 的大小,有可能吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何控制 UICollectionViewCell 调整动画大小?

UICollectionViewCell 在代码中调整布局后更新约束

动态调整 UICollectionViewCell 的大小

使用自动布局调整大小的 UICollectionViewCell

使用图像上传 Swift 动态调整 UICollectionViewCell 的大小

调整我的 UICollectionViewCell 大小的问题