Il modo migliore per ottenere l'animazione sulla cella di UICollectionView
è prioritario rispetto al suo layout UICollectionViewLayout
. Ha un metodo che restituirà gli attributi di layout della cella che vuoi sia visualizzato/inserisci/cancella.
Ad esempio: ho creato una classe KDCollectionViewFlowLayout
che eredita UICollectionViewFlowLayout
e sovrascrive l'attributo 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
}
}
Ora è necessario assegnare oggetto di questo FlowLayout alla vista di raccolta sia in viewDidLoad oppure si può assegnare attraverso storyboard.
let flowLayout = KDCollectionViewFlowLayout()
self.collectionView?.setCollectionViewLayout(flowLayout, animated: true)
Ora, è tutto pronto per la trasformazione della cellula che è stata definita a finalLayoutAttributesForDisappearingItemAtIndexPath
metodo ogni volta che si esegue alcuna operazione di eliminazione sul collectionView
.
Aggiornamento
È necessario eliminare gli elementi da vista collezione utilizzando operazione di travaso.
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 la tua app sembra fantastica! –
James, hai mai funzionato come volevi? Cercando di implementare esattamente lo stesso tipo di funzionalità in Swift. Mi piacerebbe vedere la tua app, anche se funzionasse! –