UICollectionView
のセルがレイアウトUICollectionViewLayout
をオーバーライドしている上のアニメーションを実現するための最良の方法。そのhasメソッドは、表示/挿入/削除したいセルのレイアウト属性を返します。
例:UICollectionViewFlowLayout
を継承するクラスKDCollectionViewFlowLayout
を作成し、delete属性を上書きします。
class KDCollectionViewFlowLayout: UICollectionViewFlowLayout {
override func finalLayoutAttributesForDisappearingItemAtIndexPath(itemIndexPath: NSIndexPath) -> UICollectionViewLayoutAttributes? {
let attribute = super.finalLayoutAttributesForDisappearingItemAtIndexPath(itemIndexPath)
attribute?.transform = CGAffineTransformTranslate(attributes.transform, 0, ITEM_SIZE)
attribute?.alpha = 0.0
return attribute
}
}
は今、あなたはストーリーボードを通してそれを割り当てることができますのviewDidLoadかのいずれかでのコレクションビューに、このFlowLayoutののオブジェクトを割り当てる必要があります。
let flowLayout = KDCollectionViewFlowLayout()
self.collectionView?.setCollectionViewLayout(flowLayout, animated: true)
は今、あなたはすべてのあなたがcollectionView
上の任意の削除操作を実行するたびにfinalLayoutAttributesForDisappearingItemAtIndexPath
メソッドに定義された細胞の形質転換のために設定されています。
更新
あなたは、バッチ操作を使用して、コレクションビューからアイテムを削除する必要があります。
collectionView.performBatchUpdates({() -> Void in
//Array of the data which you need to deleted from collection view
let indexPaths = [NSIndexPath]()
//Delete those entery from the data base.
//TODO: Delete the information from database
//Now Delete those row from collection View
collectionView.deleteItemsAtIndexPaths(indexPaths)
}, completion:nil)
Jamesあなたのアプリは素晴らしいです! –
James、あなたは意図したとおりにこれを実現しましたか? Swiftで同じタイプの機能を正確に実装しようとしています。あなたのアプリを見たいと思っても、もしうまくいけば! –