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

Resize a single UICollectionViewCell, Is it possible?

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

有人做到了吗?

谢谢

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
}

是的,就这么简单。

(尽管这并不能回答问题是否是个好主意。您将在实施时看到它;)