gpt4 book ai didi

swift - 滑动动画以删除 UICollectionView 中的 Cell - Swift 2.0

转载 作者:IT王子 更新时间:2023-10-29 05:48:25 30 4
gpt4 key购买 nike

我使用 UICollectionView 创建了一个应用,如下图所示:

enter image description here

添加了两个手势:

第一个(向上)将删除单元格。

第二个(向下)将更新单元格(获取 CoreData 的新数据)。这些功能工作正常,但没有动画。 iOS 有一个非常酷的动画,将单元格向上拖动,然后单元格消失。

我是 swift 动画的初学者,所以我有点迷茫。

我的问题是:如何添加占据整个单元格的动画?

我在网站上阅读了一些答案,但都是 Object-C ( like this )。

有人可以帮助我吗?

最佳答案

UICollectionView 的单元格上实现动画的最佳方法是覆盖其布局 UICollectionViewLayout。它的方法将返回您想要显示/插入/删除的单元格的布局属性。

例如:我创建了一个继承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

}
}

现在您需要将此 flowLayout 的对象分配给 viewDidLoad 中的 Collection View ,或者您可以通过 Storyboard分配它。

let flowLayout = KDCollectionViewFlowLayout()
self.collectionView?.setCollectionViewLayout(flowLayout, animated: true)

现在,无论何时对 collectionView 执行任何删除操作,您都可以将定义的单元格转换为 finalLayoutAttributesForDisappearingItemAtIndexPath 方法。

更新

您需要使用批处理操作从 Collection View 中删除项目。

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)

关于swift - 滑动动画以删除 UICollectionView 中的 Cell - Swift 2.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33294864/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com