我使用了UICollectionView
创建了一个应用程序,就像这张图片一样:
添加了两个手势:
第一个手势(向上)将抹掉该单元格。
第二个手势(向下)将更新该单元格(获取CoreData的新数据)。这些功能都很好用,但没有动画。iOS有一个非常酷的动画,将单元格拖到上面,单元格消失。
我是一个初学者,在swift动画方面有点迷茫。
我的问题是:如何添加一个占据整个单元格的动画?
我在网站上阅读了一些答案,但全部都是Object-C写的(像这样)。
有人能帮帮我吗?
我使用了UICollectionView
创建了一个应用程序,就像这张图片一样:
添加了两个手势:
第一个手势(向上)将抹掉该单元格。
第二个手势(向下)将更新该单元格(获取CoreData的新数据)。这些功能都很好用,但没有动画。iOS有一个非常酷的动画,将单元格拖到上面,单元格消失。
我是一个初学者,在swift动画方面有点迷茫。
我的问题是:如何添加一个占据整个单元格的动画?
我在网站上阅读了一些答案,但全部都是Object-C写的(像这样)。
有人能帮帮我吗?
实现UICollectionView
单元格的动画效果的最佳方法是重写其布局UICollectionViewLayout
。它有一个方法,将返回您想要出现/插入/删除的单元格的布局属性。
例如:我创建了一个类KDCollectionViewFlowLayout
,继承自UICollectionViewFlowLayout
并重写了删除属性。
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中或通过storyboard将此flowLayout对象分配给集合视图。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)