UITableViewCell水平自定义swip-to-delete效果

时间:2013-08-19 14:32:43

标签: ios uitableview swipe

我有一个UITableView,并希望有一种自定义方式来删除我的单元格。当有人在上面滑动时,单元格会在侧面水平移动并消失。

与iOS 7(http://movies.apple.com/media/us/ios/ios7/f34c5445-5a9c-4b3a-9556-8efe89147559/shared_multitasking/shared_multitasking_2x.mp4)上的多任务菜单完全相同,但不是垂直滑动,而是水平。

有人知道该怎么做吗?我应该只用一秒动画来检测滑动并改变我的细胞框架吗?或者你会推荐UITableViewCell的漂亮子类吗?

1 个答案:

答案 0 :(得分:0)

我刚刚汇总了一个非常基本的示例,说明如何执行此操作并在此处发布:https://github.com/NSPostWhenIdle/MMSwipeToDeleteCollection。不要指望能够将它拖放到您的项目中并让它工作,因为坦率地说它可能不会。

创建这样的东西的基本思想从UICollectionViewCell的子类开始,该子类向单元格添加手势。在我的例子中,我使用了一个轻扫手势,因为我很懒:p并且设置一个平移手势(你最终产品中你想要的)涉及更多的开销,因为平移手势和平移手势之间存在冲突。在集合视图的滚动视图中平移手势。

从那里开始基本上一帆风顺。当手势识别器被调用时,您可以将单元格设置为屏幕顶部的动画。如果你用平移手势设置它,你需要配置它来拖动单元格,并在完成时向上或向下动画,但在我的滑动示例中,单元格移动到顶部(4英寸模拟器) ,我使用静态值。)

然后剩下要做的就是清理一下。单元格退出屏幕后,您可以安全地从数据源中删除它,然后从集合视图中删除它。 (我使用通知中心提醒收集视图,但你应该制定一个协议)我唯一的问题就是细胞动画回落,同时作为股票删除动画的一部分淡出。在离开屏幕后将其alpha设置为0可以解决此问题。