使用错误的backgroundColor自定义UITableViewCell

时间:2013-09-19 13:15:35

标签: uitableview ios7

我有一个基于Storyboard Prototype单元格的自定义UITableViewCell。在我的自定义单元格类中,我根据单元状态“选中”或“突出显示”为单元格着色,代码如下所示:

- (void)updateCellDisplay {
    if (self.selected || self.highlighted) {
        self.label.textColor = [UIColor whiteColor];
        self.backgroundColor = [UIColor myLightBlueColor];
    } else {
        self.label.textColor = [UIColor blackColor];
        self.backgroundColor = [UIColor whiteColor];
    }
}

- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated {
    [super setHighlighted:highlighted animated:animated];
    [self updateCellDisplay];
}

- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
    [super setSelected:selected animated:animated];
    [self updateCellDisplay];
}

现在我对iOS7有这种奇怪的行为,在选择结束后,单元格将自己重绘为蓝色。标签不再可见。它看起来像是一个覆盖所有东西的前景色。这适用于iOS7之前的所有iOS版本。

enter image description here

enter image description here

enter image description here

那可能是什么?

1 个答案:

答案 0 :(得分:0)

似乎单元格的contentView高于内容。我有一个类似的问题,并通过在cellForRowAtIndexPath中的contentView中添加我的自定义项来解决它。

在我的情况下,由于contentView已经结束,所以这些项目没有接收到触摸。

[[cell contentView] addSubview:cell.itemTitleView]

我希望它有所帮助。