UITableVewCell的移动删除
来源:互联网 发布:jc js jk 编辑:程序博客网 时间:2024/05/22 01:17
如何实现UITableViewCell的侧滑删除功能呢?很简单的思路
给cell添加一个长按手势,然后根据手势的状态,在开始的时候给旋转三十度
在移动过程中,捕获快照
在结束的时候判断坐标值,给VIewController发一个删除cell的回调,同时TableView reloadData就可以了
@interface CustomTableViewCell (){ UIView *snapView;}@end@implementation CustomTableViewCell- (void)awakeFromNib { _containerView.layer.cornerRadius=4; _shadowView.layer.shadowColor=[UIColor blackColor].CGColor; _shadowView.layer.shadowOffset=CGSizeMake(2, 2); _shadowView.layer.shadowOpacity=0.5; _shadowView.layer.shadowRadius=5; UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongpressGesture:)]; [self.contentView addGestureRecognizer:longPress];}- (void)handleLongpressGesture:(UILongPressGestureRecognizer *)gesture{ CGPoint startPoint = CGPointZero; switch (gesture.state) { case UIGestureRecognizerStateBegan: { snapView = [_containerView snapshotViewAfterScreenUpdates:NO]; startPoint = [gesture locationInView:self.contentView]; //重设layer锚点 snapView.layer.anchorPoint = CGPointMake(startPoint.x/snapView.layer.frame.size.width-0.1, startPoint.y/snapView.layer.frame.size.height-0.1); snapView.frame = _containerView.frame; snapView.transform = CGAffineTransformMakeRotation(M_PI/30); [self.contentView addSubview:snapView]; self.containerView.hidden = YES; self.shadowView.hidden = YES; break; } case UIGestureRecognizerStateChanged: { CGPoint changePoint = [gesture locationInView:self.contentView]; [UIView animateWithDuration:0.05 animations:^{ snapView.layer.position = changePoint; }]; break; } case UIGestureRecognizerStateEnded: { NSLog(@"ended"); CGPoint endPoint = [gesture locationInView:self.contentView]; if (endPoint.x>self.contentView.bounds.size.width-50) { if (self.cellBlock) { self.cellBlock(YES, _cellIndex); } }else { if (self.cellBlock) { self.cellBlock(NO, _cellIndex); } } [snapView removeFromSuperview]; self.containerView.hidden = NO; self.shadowView.hidden = NO; break; } default: break; }}
ViewController
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ CustomTableViewCell *cell = (CustomTableViewCell *)[tableView dequeueReusableCellWithIdentifier:@"customCell"]; cell.cellIndex = indexPath; cell.cellBlock = ^(BOOL isDelete, NSIndexPath *index){ if (isDelete) { [_mTableView beginUpdates]; rowCount--; [_mTableView deleteRowsAtIndexPaths:@[index] withRowAnimation:UITableViewRowAnimationRight]; [_mTableView endUpdates]; dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ [_mTableView reloadData]; }); } }; cell.selectionStyle = UITableViewCellSelectionStyleNone; return cell;}
运行结果
0 0
- UITableVewCell的移动删除
- cell 的选择, 移动 , 删除, 移动, 添加
- UITableView的移动、删除操作
- 文件夹的删除、重命名、移动、复制
- 文件的复制、移动与删除
- UITableView实现删除移动编辑的样式
- UITableViewCell的标记、移动、删除、插入
- 创建、移动和删除的功能
- UITableViewCell的标记、移动、删除、插入
- UITableViewCell的标记、移动、删除、插入
- UITableViewCell的标记、移动、删除、插入
- UITableViewCell的标记、移动、删除、插入
- 文件的复制、删除和移动命令
- UITableViewCell的标记、移动、删除、插入
- UITableViewCell的标记、移动、删除、插入
- ios UITableView的移动、添加和删除
- UITableViewCell的标记、移动、删除、插入
- UITableViewCell的标记、移动、删除、插入
- ASP.NET输入文本框自动提示功能
- 代码审计之jsp+servlet模式从客户端接收参数的函数大全
- Java基础原理回顾_day_02
- consul的安装和配置
- android中的线程中断小结
- UITableVewCell的移动删除
- 【leetcode】88. Merge Sorted Array
- SQLServer常用数据类型(转)
- android Zxing 扫描区域的大小设置和自定义扫描view
- 在Mac上面搭建Android开发环境
- MVC C# Html.TextBox等Html控件设置样式
- jdbc中单引号与双引号的作用
- 基于朴素贝叶斯的文本分类器
- javascript:void(0)是什么意思?JS的几种跳转