我创建了一堆单元格,我在表格视图中重复使用。所有这些单元格中都有不同的UILabel
s和一些UIImageView
s(没有任何内容覆盖整个单元格)。
在IB中设置背景颜色无效(始终为白色或透明,不能说明其中哪一个)。但是,如果按下Command-R(模拟界面),单元格在模拟器中具有正确的背景颜色。
我尝试在tableView:cellForRowAtIndexPath:
中设置它,但它不会像我想的那样工作。
这就是诀窍:
cell.contentView.backgroundColor = [UIColor redColor];
但这些没有效果(即使我将cell.contentView.backgroundColor
设置为clearColor
):
cell.backgroundView.backgroundColor = [UIColor redColor];
cell.backgroundColor = [UIColor redColor];
我在IB中设置了所有布局/字体/背景内容。知道为什么在这种情况下这不起作用吗?
为什么我需要修改contentView
的{{1}}而不是backgroundColor
?
这似乎是一个常见问题。有人可以指出我正确的方向(最终)了解如何在表格视图单元格中处理背景颜色。
答案 0 :(得分:53)
要更改单元格的背景颜色,必须使用willDisplayCell:forRowAtIndexPath:
方法执行此操作。这在概述底部附近的UITableViewCell documentation中提到。所以你需要:
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
cell.backgroundColor = [UIColor redColor];
}
contentView只是推荐自定义控件的子视图,以便在进行表格编辑时正确布置单元格。
答案 1 :(得分:1)
有一个更简单的解决方案:在Interface Builder中创建UITableViewCell
时,只需拖放其他UIView
即可覆盖您在IB中创建的整个UITableViewCell
。将其他UI元素放在此附加UIView
之上。您可以将此额外UIView
设置为您喜欢的任何背景。
StackOverflow上有很多答案建议您使用如下代码行更改UITableViewCell
的背景颜色:
cell.contentView.backgroundColor = [UIColor redColor];
如果通过略微调整contentView
的帧大小为单元格添加阴影,您可能会发现此行会更改单元格的背景颜色和投影区域的颜色好。