项目中需要自定义iOS侧滑删除按钮定制,平常正常使用,但是在分多个组,且tableview UI相对复杂,侧滑需要定制。
1、查阅相关资料 发现分iOS 11 和iOS11之前的
分别处理方式不同
iOS11之前的在cell里面使用一下方法 其方法是在加载子类时候修改删除按钮样式
// 改变滑动删除按钮样式 记住是在”cell里面“
- (void)layoutSubviews {
[super layoutSubviews];
for(UIView*subViewinself.subviews){
if([subView isKindOfClass:NSClassFromString(@"UITableViewCellDeleteConfirmationView")]) {
CGRectcRect = subView.frame;
//删除按钮显示范围
CGFloatadjustheight =10;
if(self.identityType==2) {
adjustheight =1;
}
cRect.size.height=69;
cRect.origin.y= adjustheight;
subView.frame= cRect;
}
}
}
在iOS11之后,系统为我们提供了对应的函数 其本质是从TableView 里面找到 UISwipeActionPullView 然后修改样式
//iOS11 处理
- (void)viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
if (self.editingIndexPath && (IOS_VERSION_11_OR_LATER)) {
[self configSwipeButton];
}
}
- (void)configSwipeButton{
// iOS 11层级: UITableView -> UISwipeActionPullView
for(UIView*subviewinself.tableView.subviews) {
if ([subview isKindOfClass:NSClassFromString(@"UISwipeActionPullView")]){
subview.backgroundColor = [UIColor clearColor];
UIButton*deleteBtn = subview.subviews.firstObject;
CGRectcRect = deleteBtn.frame;
//删除按钮显示范围
CGFloatadjust =10;
if(self.onlyOneSection) {
adjust =0;
}
cRect.size.height=69;
cRect.origin.y= adjust;
deleteBtn.frame= cRect;
}
}
}