(原创博客,如将转载烦请备注出处)
iOS版本的QQ左滑会出现‘置顶’、‘删除’等多个按钮,产生左划动作cell会向左滑动,在cell已经是出现多个操作按钮的情况下点击或产生右滑动作cell都会复位。
以前我的第一想法和做法是:自定义cell,在cell上放一个scrollview,根据手势来判别相应操作,加上一些动画,可是这样的做法很难达到很和谐,如系统动画那般丝滑。
下面我要给大家介绍PTLestSlideTableView。PTLestSlideTableView是继承了UITableView,并开放出按钮相关配置接口。
直接定义一个成员属性PTLeftSlideTableView *tableView
@property (nonatomic, strong) PTLeftSlideTableView *tableView;
在初始化的时候可以定义好相关属性
- (PTLeftSlideTableView *)tableView{
if (!_tableView) {
_tableView = [[PTLeftSlideTableView alloc]initWithFrame:self.view.frame];
_tableView.PTdelegate = self;
_tableView.PTdataSource = self;
_tableView.btnFont = 11.0;
_tableView.btnWidth = 74.0;
_tableView.editingArr = @[@"置顶",@"删除"];
_tableView.editingBgColorArr = @[[UIColor yellowColor],[UIColor redColor]];
_tableView.editingTColorArr = @[[UIColor blueColor],[UIColor blackColor]];
}
return _tableView;
}
然后剩下的就跟平时使用uitableview一样了。
接下来来讲讲PTLeftSlideTableView的实现原理。
因为uitableviewcell的编辑操作其实就是cell的左平移,即cell.frame的改变,由此想到了KVO机制。PTLeftSlideTableView正是运用KVO,在cell的frame发生改变时平铺一个view在显现出来的UITableViewCellDeleteConfirmationView上方。
效果如下:
网友评论