美文网首页
iOS 实现左滑自定义删除按钮

iOS 实现左滑自定义删除按钮

作者: 青柠盛夏 | 来源:发表于2023-03-21 15:20 被阅读0次

如图:

直接拷贝以下内容修改自己的图片以及cell即可

//MARK: 设置左滑按钮的样式

- (void)setupSlideBtnWithEditingIndexPath:(NSIndexPath *)editingIndexPath {

    // 判断系统是否是 iOS13 及以上版本

    if(@available(iOS 13.0, *)) {

        for(UIView*subViewinself.tableView.subviews) {

            if([subViewisKindOfClass:NSClassFromString(@"_UITableViewCellSwipeContainerView")] && [subView.subviewscount] >= 1) {

                // 修改图片

                UIView*remarkContentView = subView.subviews.firstObject;

                [selfsetupRowActionView:remarkContentView];

            }

        }

        return;

    }

    // 判断系统是否是 iOS11 及以上版本

    if(@available(iOS 11.0, *)) {

        for(UIView*subViewinself.tableView.subviews) {

            if([subViewisKindOfClass:NSClassFromString(@"UISwipeActionPullView")] && [subView.subviewscount] >= 1) {

                // 修改图片

                UIView*remarkContentView = subView;

                [selfsetupRowActionView:remarkContentView];

            }

        }

        return;

    }

    // iOS11 以下的版本

    setTimeViewCell *cell = [self.tableView cellForRowAtIndexPath:editingIndexPath];

    for(UIView*subViewincell.subviews) {

        if([subViewisKindOfClass:NSClassFromString(@"UITableViewCellDeleteConfirmationView")] && [subView.subviewscount] >= 1) {

            // 修改图片

            UIView*remarkContentView = subView;

            [selfsetupRowActionView:remarkContentView];

        }

    }

}

- (void)tableView:(UITableView *)tableView willBeginEditingRowAtIndexPath:(NSIndexPath *)indexPath{

    dispatch_async(dispatch_get_main_queue(), ^{

          [self setupSlideBtnWithEditingIndexPath:indexPath];

      });

}

- (NSArray*)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(nonnull NSIndexPath *)indexPath{

    //title不设为nil 而是空字符串 理由为啥 ?  自己实践 跑到ios11以下的机器上就知道为啥了

    UITableViewRowAction *deleteAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleNormal title:@"        " handler:^(UITableViewRowAction *action, NSIndexPath *indexPath){

        NSLog(@"哈哈哈哈");

        [tableViewsetEditing:NOanimated:YES];  // 这句很重要,退出编辑模式,隐藏左滑菜单

    }];

    return@[deleteAction];

}

- (void)setupRowActionView:(UIView*)rowActionView {

    // 切割圆角

//    [rowActionView cl_setCornerAllRadiusWithRadiu:20];

    // 改变父 View 的frame,这句话是因为我在 contentView 里加了另一个 View,为了使划出的按钮能与其达到同一高度

    CGRectframe = rowActionView.frame;

    frame.origin.y+= (7);

    frame.size.height-= (13);

    rowActionView.frame= frame;

    // 拿到按钮,设置

    UIButton*button = rowActionView.subviews.firstObject;

    [buttonsetImage:[UIImage imageNamed:@"删除 (1)"]  forState:UIControlStateNormal];

    [buttonsetTitle:@"" forState:UIControlStateNormal];

}

相关文章

网友评论

      本文标题:iOS 实现左滑自定义删除按钮

      本文链接:https://www.haomeiwen.com/subject/iwymrdtx.html