-
UITableViewCell在选中状态下, 上面的子控件会被渲染, 而改变颜色
-
如下图所示:
系统效果- 橙色按钮被渲染, 颜色改变
-
有时, 我们不想要子控件的颜色被渲染, 而是在整个点击过程中颜色都不变
-
如下图所示:
目标效果 -
我们可以在自定义的cell中(继承自UITableViewCell)重写下面这个方法:
- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated
-
具体实现如下
- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated
{
// 获取 contentView 所有子控件
NSArray<__kindof UIView *> *subViews = self.contentView.subviews;
// 创建颜色数组
NSMutableArray *colors = [NSMutableArray array];
for (UIView *view in subViews) {
// 获取所有子控件颜色
[colors addObject:view.backgroundColor ?: [UIColor clearColor]];
}
// 调用super
[super setHighlighted:highlighted animated:animated];
// 修改控件颜色
for (int i = 0; i < subViews.count; i++) {
subViews[i].backgroundColor = colors[i];
}
}
网友评论