11

一个 UITableViewCell 是“预建的”,它带有一个 UILabel 作为它的一个,并且在你初始化它之后唯一的子视图。我真的很想改变所说标签的背景颜色,但无论我做什么颜色都不会改变。有问题的代码:

UILabel* label = (UILabel*)[cell.contentView.subviews objectAtIndex:0];
label.textColor = [UIColor whiteColor];
label.backgroundColor = [UIColor darkGrayColor];
label.opaque = YES;
4

4 回答 4

8

您的代码片段对我来说很好,但我相信必须在将单元格添加到表格并显示之后才能完成。如果从 调用initWithFrame:reuseIdentifier:,你会得到一个异常,因为UILabel 子视图还没有被创建。

可能最好的解决方案是添加您自己的UILabel,配置为您的标准,而不是依赖于这个(非常摇摇晃晃的)路径到内置路径。

于 2008-10-21T17:13:01.280 回答
5

这不起作用,因为 UITableViewCell 在 layoutSubviews 方法中设置了它的标签 backgroundColors。

如果要更改内置 textLabel 或 detailTextLabel 的颜色,请将 UITableViewCell 子类化并覆盖 layoutSubviews。调用超级实现,然后将 backgroundColor 属性更改为您想要的。

- (void) layoutSubviews
{   
     [super layoutSubviews];

     self.textLabel.backgroundColor = [UIColor redColor];
}
于 2010-11-07T20:48:34.293 回答
2

在分配单元格时将自己的标签添加到 contentView 中,而不是依赖于内置标签的提取。然后您可以控制所有值:

UILabel* label = [[[UILabel alloc] init] autorelease];
label.textColor = [UIColor whiteColor];
label.backgroundColor = [UIColor darkGrayColor];
label.opaque = YES;
[cell.contentView addSubview:label];
于 2008-10-21T20:43:01.400 回答
0
for (UIView *views in views.subviews)
{
    UILabel* temp = (UILabel*)[views.subviews objectAtIndex:0];
    temp.textColor = [UIColor whiteColor];        
    temp.shadowColor = [UIColor blackColor];
    temp.shadowOffset = CGSizeMake(0.0f, -1.0f);
} 
于 2012-09-06T10:59:40.053 回答