更改UITableViewCell textLabel背景颜色以清除

时间:2009-07-22 10:49:06

标签: iphone-sdk-3.0 uitableview background-color

在我的应用程序中,我有一个带有customViewCells的表格视图。我将UITableViewCell类子类化,并添加了一个将加载异步的图像和我使用cell.textLabel.text = @"someThext"的文本。

对于单元格,背景颜色交替设置为[UIColor darkGrayColor][UIColor whiteColor]

当我在模拟器和手机上运行应用程序时,单元格的textLabel背景为白色。我想把它设置得很清楚,因为我希望单元格的背景颜色不是条带然后是白色而是另一条条。

在我添加的自定义单元格的init方法中,希望白色会变成红色,但它没有任何效果:

[self.textLabel setBackgroundColor:[UIColor redColor]];

我也试过了:

self.textLabel.backgroundColor = [UIColor redColor];

但是这也行不通......如果我添加一个UILabel作为子视图,可以设置标签的背景颜色,但我不想这样做,因为当我旋转手机时我想要我的标签自动放大。

为什么设置cell.textLabel的背景颜色的任何想法都不起作用?

谢谢

7 个答案:

答案 0 :(得分:48)

如果您不想继承UITableViewCell,可以添加:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
     [[cell textLabel] setBackgroundColor:[UIColor clearColor]];
     [[cell detailTextLabel] setBackgroundColor:[UIColor clearColor]];
}

答案 1 :(得分:23)

问题是UIKit在-setSelected方法中设置了单元格背景颜色。我有方法,但没有self.textLabel.backgroundColor = [UIColor clearColor]; self.detailTextLabel.backgroundColor = [UIColor clearColor];因此,我添加了它们,图片中提到的问题已修复。

- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
    [super setSelected:selected animated:animated];
    self.textLabel.backgroundColor = [UIColor clearColor];
    self.detailTextLabel.backgroundColor = [UIColor clearColor];
}

答案 2 :(得分:3)

看起来Apple在这里改变了一些东西。在iOS4中完成此操作:

self.textLabel.backgroundColor = [UIColor xxxColor];
self.detailTextLabel.backgroundColor = [UIColor xxxColor];

至少达到标签背景透明或采用背景颜色的程度。仍然无法设置自己的背景颜色。

很好,这是固定的,但如果您使用基本SDK 4.1和min开发,在测试期间有点令人惊讶。部署3.1 for iPhone classic和iPad。

答案 3 :(得分:0)

要设置清晰的背景颜色,可以使用clearColor:

    [[cell textLabel] setBackgroundColor:[UIColor clearColor]];

这是你的意思吗?

答案 4 :(得分:0)

请参阅此帖子:How do I set UITableViewCellSelectionStyle property to some custom color?

在你的情况下只使用白色背景颜色的UIView

答案 5 :(得分:0)

我没有尝试过,但这是猜测...为了绘制得更快,默认情况下标签的opaque属性可能会设置为true。

尝试

cell.titleLabel.opaque = NO;
cell.titleLabel.backgroundColor = [UIColor clearColor];

如果这不起作用,我可能会在此时放弃并为单元格创建自己的UILabel。

答案 6 :(得分:0)

设置textlabel的颜色你应该这样做: t.textColor = [UIColor colorYouWantRGB];