如何设置UITableViewCell的背景色

2016-11-30  本文已影响275人  Youthfulless

我创建了一些在表视图里重复使用的单元格。所有的这些单元格内部都有不同的UILabel以及UIImageView(没有什么覆盖完整的单元格)。

在IB里设置背景色没效果(总是白色的或透明的,具体也说不清是哪一种)。但是如果按命令-R(模拟器界面),单元格在模拟器里就有正确的背景色了。

我尝试在tableView:cellForRowAtIndexPath里设置,但是跟我预期的一样不起作用。

这能制造个假象:

1

cell.contentView.backgroundColor = [UIColor redColor];

但是没有效果(即使我设置了cell.contentView.backgroundColor为clearColor):

2

cell.backgroundView.backgroundColor = [UIColor redColor];​

cell.backgroundColor = [UIColor redColor];​

我都是在IB里设置布局/字体/背景色,为什么这次不起作用呢?

为什么我要修改contentView的backgroundColor,而不是backgroundView的呢?

这好像是个常见的问题。有谁能指导我一下如何控制表示图单元格的背景色呢?

答案:

为了改变单元格的背景色,你需要修改willDisplayCell:forRowAtIndexPath:方法,这在UITableViewCell documentation

里提到过、所以你需要:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath

{

cell.backgroundColor = [UIColor redColor];

}

contentView 仅仅是建议 subview 放入自定义控件,这样单元格能在表格编辑时适当的布局。

drekka

我发现this Cocoa With Love article

很有用,因为这看起来是一个完全定制的表视图,并且介绍了怎么做。

russes

还有一个简单的解决方案:当你在界面生成器里创建UITableViewCell的时候,仅仅拖拽一个额外的UIView,这样就能覆盖IB里创建的所有UITableViewCell。在额外添加的UIView的顶部放置额外添加的UI元素,你可以将额外的UIView设置成任何你想要的背景色。

StackOverflow上有很多答案建议你通过使用代码改变UITableViewCell的背景色,就像下面的这个:

1

cell.contentView.backgroundColor = [UIColor redColor];

如果你通过轻微调整contentView的框架大小来给单元格增加阴影,你或许会发现这行代码会同时改变单元格的背景色和阴影区域。

上一篇下一篇

猜你喜欢

热点阅读