Проведите анимацию для удаления ячейки в UICollectionView-Swift 2.0
Я создал приложение с UICollectionView
такой образ:
добавлены два жесты:
первый (вверх) удалит ячейку.
второй (вниз) обновит ячейку (возьмите новые данные CoreData). Функции работают нормально, но анимации нет. iOS имеет очень классную анимацию, перетаскивая ячейку вверх, и ячейка исчезает.
Я новичок в анимации swift, поэтому я немного потерялся, когда он.
мой вопрос: Как я могу добавить анимацию, которая занимает всю клетку?
Я прочитал некоторые ответы на сайте, но все в Object-C (такой).
может кто-нибудь помочь мне?
1 ответов
лучший способ достичь анимации на ячейке UICollectionView
переопределяет его макет UICollectionViewLayout
. Его метод имеет, который вернет атрибуты макета ячейки, которые вы хотите либо показать/вставить/удалить.
например: я создал класс KDCollectionViewFlowLayout
наследование UICollectionViewFlowLayout
и переопределить атрибут 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
}
}
теперь вам нужно назначить объект этого flowLayout представлению коллекции в viewDidLoad или вы можете назначить его через раскадровка.
let flowLayout = KDCollectionViewFlowLayout()
self.collectionView?.setCollectionViewLayout(flowLayout, animated: true)
теперь вы все настроены на преобразование ячейки, которую вы определили в finalLayoutAttributesForDisappearingItemAtIndexPath
метод всякий раз, когда вы выполняете любую операцию удаления на collectionView
.
обновление
вам нужно удалить элементы из представления коллекции с помощью пакетной операции.
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)