很惊讶竟然工作了这么久才遇到这个问题,是不是我的代码写的还是太少了😂,感觉不少同学会遇到这个问题,所以还是分享一下。
一共找到了四种解决方案,大家可以根据自己的需求进行选择。
第一种:直接将颜色赋到layer层上面
_todayLbl.layer.backgroundColor = [UIColor customOrangeColor].CGColor;
第二种:每次在layoutSubviews方法中重新给颜色赋值
- (void)layoutSubviews
{
[super layoutSubviews];
/*
功能代码
*/
_todayLbl.backgroundColor = [UIColor customOrangeColor];
}
第三种:(如果你的背景色和文字都是固定不变的话),切成图片好了,perfect!
第四种:重写一个UILabl的子类,然后重写颜色赋值方法
- (void)setPersistentBackgroundColor:(UIColor*)color {
super.backgroundColor = color;
}
- (void)setBackgroundColor:(UIColor *)color {
// do nothing - background color never changes
}
我的理解是UITableviewcell在选中状态下,会通过layoutSubviews方法对UILabel的背景色做clear处理,不过具体为什么没搞清楚。
当然如果选中类型选择UITableViewCellSelectionStyleNone的话,就不会出现文章中说的这种问题了。
【既然来了,留下个喜欢再走吧,鼓励我继续写下去~~
如果喜欢我的文章,那就关注我的简书账号吧,我们一起做朋友~~
如果是土豪,那就打赏一下吧,我喜欢和土豪做朋友~~】