在平常开发中咱们可能会遇到须要自定义UITableViewCell左滑删除按钮的样式,网上也有许多自定义的第三方,可是都过重量级了,应为咱们可能咱们的需求很小,也不想大动干戈的导入一个第三方,而后设置各类一大堆属性,太麻烦了,那么怎么来修改系统自带的呢?xcode
可能你说不能修改,万是否是绝对的,咱们有神器reveal,做为一名iOS程序猿,若是你连reveal都不知道或不会用的话你就太low了,OK,咱们开始咱们的黑暗料理.布局
首先咱们来看reveal下UITableViewCell左滑按钮的层级关系,代理
咱们来看下这是cell左滑状态下的层级关系code
1,cell有两个subView,一个是UITableViewCellDeleteConfirmationView,这个类咱们在xcode中是打不出来也找不出来的,因此你们就别找了开发
另外一个是cell的contentView,这个就是咱们经常使用的cell.contentView,这个就不用说了你们都知道,rem
咱们来分析UITableViewCellDeleteConfirmationView,他是一个view,他的子空间就是咱们要找的删除按钮,it
你们看到_UITableViewCellActionButton这个类别担忧,咱们不用管它,咱们把他看作UIButton就好了,当作button那就好办了,想怎么改就怎么改,那么咱们怎么拿到这个按钮呢,且看下面黑暗料理io
-(void)modifiDeleteBtn{ for (UIView *subView in self.subviews) { if ([subView isKindOfClass:NSClassFromString(@"UITableViewCellDeleteConfirmationView")]) { subView.backgroundColor=kColorBlue; for (UIButton *btn in subView.subviews) { if ([btn isKindOfClass:[UIButton class]]) { btn.backgroundColor=kColorBlue; } } } } }
遍历子控件就找到了table
而后想怎么改就怎么改,class
这段代码咱们要在
layoutSubviews里调用,才能遍历出来
这个
UITableViewCellDeleteConfirmationView的宽度咱们怎么控制呢,
-(NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath{ return @"删除哈哈哈哈哈"; }
在tableView的这个代理里面控制,而后在cell内部控制咱们按钮要显示的title,也能够设置image,也能够把它给remove调,添加咱们本身定义的view啊什么的,
删除按钮是添加在
UITableViewCellDeleteConfirmationView 这个类对应的view上面的,因此你们添加的时候也添加到他上面,布局大小就按他的frame来设置,也能够添加约束.有兴趣的同窗试试