选择UITableViewCell时,UILabel背景模糊

时间:2011-07-04 07:13:46

标签: iphone objective-c ios

我在UITableViewCell中有一些UILabel,背景颜色和白色文本不透明。选择此单元格时,UILabel的bg颜色似乎被所选单元格的蓝色bg颜色遮挡。然而,UILabel文本显示正常。如何让UILabel的背景颜色显示在单元格选择颜色之上?

enter image description here

11 个答案:

答案 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
}