美文网首页
如何设置UITableViewCell的背景色

如何设置UITableViewCell的背景色

作者: Youthfulless | 来源:发表于2016-11-30 10:00 被阅读275次

    我创建了一些在表视图里重复使用的单元格。所有的这些单元格内部都有不同的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的框架大小来给单元格增加阴影,你或许会发现这行代码会同时改变单元格的背景色和阴影区域。

    相关文章

      网友评论

          本文标题:如何设置UITableViewCell的背景色

          本文链接:https://www.haomeiwen.com/subject/tiozpttx.html