「这是我参与2022初次更文应战的第1天,活动概略查看:2022初次更文应战」。

前语

拾掇一下UITableview的cell左滑删去的留心点,完结一个简略的左滑删去功用。拾掇的进程也是一个回归的进程,有时分一些功用很久没写就忘记了体系的完结方法。

iOS11之前的editActionsForRowAtIndexPath方法暂时不去适配,能够自行了解去适配iOS10版别

iOS11新增的体系侧滑方法

ios11新增的方法支撑图片和文字侧滑样式, 默许的样式是图片在上,文字鄙人。滑动操作这里还有一个需求留心的是,当cell高度较小时,会只显现image,不显现title,当cell高度够大时,会一起显现image和title。

// Swipe actions
// These methods supersede -editActionsForRowAtIndexPath: if implemented
// return nil to get the default swipe actions
- (nullable UISwipeActionsConfiguration *)tableView:(UITableView *)tableView leadingSwipeActionsConfigurationForRowAtIndexPath:(NSIndexPath *)indexPath API_AVAILABLE(ios(11.0)) API_UNAVAILABLE(tvos);
- (nullable UISwipeActionsConfiguration *)tableView:(UITableView *)tableView trailingSwipeActionsConfigurationForRowAtIndexPath:(NSIndexPath *)indexPath API_AVAILABLE(ios(11.0)) API_UNAVAILABLE(tvos);

iOS体系左滑删去

不同体系版别对左滑样式的处理

/// 设置左滑菜单按钮的样式
- (void)setupSlideBtn {
  if (@available(iOS 13.0, *)) {
    for (UIView *subView in self.detailTableView.subviews) {
      if ([subView isKindOfClass:NSClassFromString(@"_UITableViewCellSwipeContainerView")] && [subView.subviews count] >= 1) {
        UIView *remarkContentView = subView.subviews.firstObject;
        [self setupRowActionViewInit: remarkContentView];
      }
    }
    return;
  }
  if (@available(iOS 11.0, *)) {
    for (UIView *subView in self.detailTableView.subviews) {
      if ([subView isKindOfClass:NSClassFromString(@"UISwipeActionPullView")] && [subView.subviews count] >= 1) {
        UIView *remarkContentView = subView;
        remarkContentView.backgroundColor = [UIColor clearColor];
        [self setupRowActionViewInit: remarkContentView];
      }
    }
    return;
  }
  // iOS11 以下的版别
  UITableViewCell *cell = [self.detailTableView cellForRowAtIndexPath:self.editingIndexPath];
  for (UIView *subView in cell.subviews) {
    if ([subView isKindOfClass:NSClassFromString(@"UITableViewCellDeleteConfirmationView")] && [subView.subviews count] >= 1) {
      UIView *remarkContentView = subView;
      [self setupRowActionViewInit:remarkContentView];
    }
  }
}

自定义cell高度时左滑样式处理

左滑删去的体系样式默许是cell的高度,当在cell显现的View和cell本身高度不等高时分需求处理

iOS体系左滑删去

demo链接

参看链接

/post/684490… iOS 自定义左滑/侧滑删去,适配 iOS13 以上版别