我们需要重载cell的 - (void)layoutSubviews方法。
我们先来看看cell上都有些什么东西吧
- (void)layoutSubviews
{
[super layoutSubviews];
for (UIView *subView in self.subviews) {
NSLog(@"%@",NSStringFromClass([subView class]));
}
}
没有滑动cell时打印出得结果是:
2015-09-25 15:23:28.053 cellTest[2845:118038] UITableViewCellContentView
2015-09-25 15:23:28.053 cellTest[2845:118038] _UITableViewCellSeparatorView
滑动cell时打印出得结果是:
2015-09-25 15:26:43.425 cellTest[2845:118038] UITableViewCellDeleteConfirmationView
2015-09-25 15:26:43.425 cellTest[2845:118038] UITableViewCellContentView
2015-09-25 15:26:43.425 cellTest[2845:118038] _UITableViewCellSeparatorView
我们可以看到滑动后多了一个UITableViewCellDeleteConfirmationView,当我们拿到这个View时我们就可以改变cell删除按钮的颜色了
- (void)layoutSubviews
{
[super layoutSubviews];
for (UIView *subView in self.subviews) {
if ([NSStringFromClass([subView class]) isEqualToString:@"UITableViewCellDeleteConfirmationView"]) {
UIView *bgView=(UIView *)[subView.subviews firstObject];
bgView.backgroundColor = [UIColor purpleColor];
}
}
}
这样cell删除按钮的背景颜由默认的红色改为了自定义的紫色,当然可以改为你想要的任意颜色
同理我们可以看看UITableViewCellDeleteConfirmationView上有些什么
NSLog(@"%@",NSStringFromClass([[bgView.subviews firstObject] class]));
打印结果是:
2015-09-25 15:52:50.989 cellTest[2937:129075] UIButtonLabel
就只有一个UIButtonLabel,说明他就是cell删除按钮的titleLabel.
for(UIView *suview in bgView.subviews){
if ([NSStringFromClass([suview class]) isEqualToString:@"UIButtonLabel"]) {
UILabel *textLabel=(UILabel *)suview;
textLabel.font=[UIFont systemFontOfSize:14];
}
}
一起学习,一起进步!