在我的应用程序中,我有一个带有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
的背景颜色的任何想法都不起作用?
谢谢
答案 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];