iOS开发给UITableView的单元格做一个类似于QQ和微信的侧滑露出删除按钮的思路

可以在tableView的cell的contentView的的下方添加删除和编辑按钮,然后给cell的contentView添加平移手势,滑动时候让cell的contentView左滑从而露出后面的删除和别的按钮


具体代码:

1.awakeFromNib方法中添加按钮和手势

- (void)awakeFromNib {

    [super awakeFromNib];

    // Initialization code

    

    _deleteBtn = [[UIButton alloc]initWithFrame:CGRectMake(kDeviceWidth-70, 0, 70, 60)];

    [_deleteBtn setTitle:@"删除" forState:UIControlStateNormal];

    _deleteBtn.backgroundColor = [UIColor redColor];

    [_deleteBtn addTarget:self action:@selector(deleteBtnAct:) forControlEvents:UIControlEventTouchUpInside];

    [self insertSubview:_deleteBtn belowSubview:self.contentView];

    

    _editBtn = [[UIButton alloc]initWithFrame:CGRectMake(kDeviceWidth-140, 0, 70, 60)];

    [_editBtn setTitle:@"编辑" forState:UIControlStateNormal];

    _editBtn.backgroundColor = [UIColor grayColor];

    [_editBtn addTarget:self action:@selector(editBtnAct:) forControlEvents:UIControlEventTouchUpInside];

    [self insertSubview:_editBtn belowSubview:self.contentView];

    

  

    //.平移手势

    UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(panAct:)];

    pan.delegate = self;


    pan.delaysTouchesBegan = YES;


    //添加平移手势

    [self.contentView addGestureRecognizer:pan];

}


平移方法

//平移方法

- (void)panAct:(UIPanGestureRecognizer *)pan{

    

    CGPoint point = [pan translationInView:pan.view];


    CGFloat value = point.x;

    if (self.contentView.left < -(70 + 70) * 1.1 || self.contentView.left > 30) {

        value = 0;

    }

    self.contentView.left += value;


    if (pan.state == UIGestureRecognizerStateEnded) {

        CGFloat x = 0;

        if (self.contentView.left < -30 && !self.isSlided) {

            x = -140;

            self.isSlided = YES;

        }else{

            self.isSlided = NO;

        }

        [UIView animateWithDuration:0.4 delay:0 usingSpringWithDamping:0.6 initialSpringVelocity:2 options:UIViewAnimationOptionLayoutSubviews animations:^{

            self.contentView.left = x;

        } completion:^(BOOL finished) {

        }];

        

    }

    

    [pan setTranslation:CGPointZero inView:pan.view];

    

}



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值