美文网首页
仿微信UITableViewCell 左滑删除、确认删除

仿微信UITableViewCell 左滑删除、确认删除

作者: Mr_墨 | 来源:发表于2019-10-21 14:08 被阅读0次


    添加基本方法

     - (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        return UITableViewCellEditingStyleDelete;
    }
    -  (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
    {
        return YES;
    }

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

    {
        for (UIView *subview in tableView.subviews) {
           if ([NSStringFromClass([subview class]) isEqualToString:@"UISwipeActionPullView"]) {
              if ([NSStringFromClass([subview.subviews[0] class]) isEqualToString:@"UISwipeActionStandardButton"]) {
                     subview.backgroundColor = [UIColor whiteColor];
                     UIButton *deleteBtn = subview.subviews[0];
                     [deleteBtn setWidth:75];
                      UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect: deleteBtn.bounds byRoundingCorners:
                      UIRectCornerBottomRight | UIRectCornerTopRightcornerRadii:CGSizeMake(8,8)];
                     CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
                     maskLayer.frame = deleteBtn.bounds;
                     maskLayer.path = maskPath.CGPath;
                    deleteBtn.layer.mask = maskLayer;              
                    deleteBtn.backgroundColor = HexRGB(0xF3755C);
                   [deleteBtn setTitle:@"删除" forState:UIControlStateNormal];
                    }
               }
             }
         }

    此方法是ios 11 之后用到的   TARGETS -> Deployment info  -> Deployment Target  设置为11.0

    - (UISwipeActionsConfiguration *)tableView:(UITableView *)tableView trailingSwipeActionsConfigurationForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        MJWeakSelf;
         UIContextualAction *action = [UIContextualAction contextualActionWithStyle:UIContextualActionStyleNormal title:@"删除" handler:^(UIContextualAction * _Nonnull action,   __kindof UIView * _Nonnull sourceView, void (^ _Nonnull completionHandler)(BOOL)) {
             if ([NSStringFromClass([sourceView.superview class]) isEqualToString:@"UISwipeActionStandardButton"]) {
                   UIButton *tmpBtn = (UIButton *)sourceView.superview;
                   if ([[tmpBtn currentTitle] isEqualToString:@"确认删除"]) {
                       DeviceRealmModel *model = [weakSelf.tableViewArr objectAtIndex:indexPath.section];                 
                      //删除操作
                    else{
                        UIImage *img = [self imageWithColor:HexRGB(0xF3755C)];
                        [tmpBtn setBackgroundImage:img forState:UIControlStateNormal];
                        [tmpBtn setTitle:@"确认删除" forState:UIControlStateNormal];
                    }
               }
          }];
       // 此处可以添加多个UIContextualAction 放入下面的configuration 数组中
           UISwipeActionsConfiguration *configuration = [UISwipeActionsConfiguration configurationWithActions:@[action]];
          configuration.performsFirstActionWithFullSwipe = NO;
           return configuration;
          }

    //  颜色转换为背景图片

    - (UIImage *)imageWithColor:(UIColor *)color {
          CGRect rect = CGRectMake(0.0f, 0.0f, 1.0f, 1.0f);
         UIGraphicsBeginImageContext(rect.size);
        CGContextRef context = UIGraphicsGetCurrentContext();
        CGContextSetFillColorWithColor(context, [color CGColor]);
        CGContextFillRect(context, rect);
       UIImage *image = UIGraphicsGetImageFromCurrentImageContext();                          
       UIGraphicsEndImageContext();   
        return image;
    }

    不要问我为什么不用设置背景色来设置颜色,此时 操作完成  主意你的xocde

    相关文章

      网友评论

          本文标题:仿微信UITableViewCell 左滑删除、确认删除

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