0

我有一个 UIcollection 视图,其中有 2 个不同大小的单元格。最后一个牢房总是较大且暴露在外,而其他所有牢房都较小且半隐藏。

现在,当用户点击半隐藏单元格时,我想选择这些单元格并将它们的位置替换为前面(暴露)的单元格并带有动画。

到目前为止,我正在重新洗牌数据源中的数据并重新加载它,这可以达到目的,但没有动画,因为找不到任何有用的东西。

任何帮助将不胜感激。注意:我使用的是 Swift。

谢谢,

4

1 回答 1

0

尝试这个:

import UIKit

private let reuseIdentifierBig = "bigger"
private let reuseIdentifierSmall = "small"

class CollectionViewController: UICollectionViewController {

let array = [0,1,2,3,4]
var selectedIndex:NSIndexPath?
var preSelectedIndex:NSIndexPath?

override func viewDidLoad() {
    super.viewDidLoad()
}

override func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
    return 1
}


override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    return array.count
}

override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
    if selectedIndex != indexPath {
        let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifierSmall, forIndexPath: indexPath)
        return cell
    } else {
        let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifierBig, forIndexPath: indexPath)
        return cell
    }
}

override func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
    preSelectedIndex = selectedIndex
    selectedIndex = indexPath
    collectionView.reloadItemsAtIndexPaths([indexPath])
    if preSelectedIndex != nil {
        collectionView.reloadItemsAtIndexPaths([preSelectedIndex!])
    }
}

}

于 2015-08-27T05:34:54.580 回答