我在UITableViewCell中有一些UILabel,背景颜色和白色文本不透明。选择此单元格时,UILabel的bg颜色似乎被所选单元格的蓝色bg颜色遮挡。然而,UILabel文本显示正常。如何让UILabel的背景颜色显示在单元格选择颜色之上?
答案 0 :(得分:16)
在多选表格视图中遇到同样的问题。尝试在-layoutSubviews中设置这些标签的背景颜色。为我工作。
答案 1 :(得分:5)
看起来标签的背景颜色与行的背景颜色(动画)一起更改。在设置初始颜色后,我只是将UILabel子类化并“保护”了backgroundColor更改:
@interface MyLabel : UILabel {
BOOL isColorLocked;
}
@property (assign, nonatomic) BOOL isColorLocked;
@end
@implementation MyLabel
@synthesize isColorLocked;
- (void)setBackgroundColor:(UIColor *)backgroundColor {
if (!isColorLocked) {
super.backgroundColor = backgroundColor;
}
}
@end
答案 2 :(得分:1)
答案 3 :(得分:1)
您是否考虑过将单元格选择样式设置为none并覆盖UITableViewCell子类中单元格的setHighlighted:(BOOL)突出显示的方法以便更好地控制?重新实现蓝色背景应该不会太困难。
如果高亮显示= YES,您可以将单元格视图的背景设置为蓝色(实心或渐变)。
答案 4 :(得分:1)
@implementation CustomCell
//这样就行了啊。。
-(NSArray*)subviews{
return nil;
}
@end
答案 5 :(得分:1)
这个更短:
@interface MyLabel : UILabel
@end
@implementation MyLabel
- (void)setBackgroundColor:(UIColor *)backgroundColor {
if (self.backgroundColor == nil) {
[super setBackgroundColor:backgroundColor];
}
}
@end
从Nib唤醒时设置背景颜色
答案 6 :(得分:0)
使用
删除选择颜色cell.selectionStyle = UITableViewCellSelectionStyleNone;
答案 7 :(得分:0)
尝试将标签带到视图的前面..您可以通过转到自定义单元格.xib,单击标签并转到编辑器,排列,置于最前面来完成此操作。
要在代码中执行此操作,这是一个小方法.. Programmatically send to front/back elements created from interface builder
答案 8 :(得分:0)
我对此有另一种预感,因为你正在设置背景颜色,并且单元格位于视图的背景中,并且是该视图的子视图......可能会有一些奇怪的事情发生在那里。
答案 9 :(得分:0)
您可以在
中设置背景颜色- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
为我工作。
答案 10 :(得分:0)
我知道这个老问题有很多答案。但是为了确认上面列出的答案在iOS 10中适用,这里很快。
override func layoutSubviews() {
super.layoutSubviews()
someLabel.backgroundColor = UIColor.orange
}