【问题标题】:Can't set background color of UITableViewCell in IB无法在 IB 中设置 UITableViewCell 的背景颜色
【发布时间】:2010-11-10 02:49:26
【问题描述】:

我创建了一堆我在表格视图中重复使用的单元格。所有这些单元格只是内部有不同的UILabels 和一些UIImageViews(没有覆盖整个单元格)。

在IB中设置背景色是没有效果的(总是白色或者透明,说不清是哪一种)。但是,如果我按 Command-R(模拟界面),则单元格在模拟器中具有正确的背景颜色。

我尝试将它设置为tableView:cellForRowAtIndexPath:,但它也没有像我想的那样工作。

这就是诀窍:

cell.contentView.backgroundColor = [UIColor redColor];

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

cell.backgroundView.backgroundColor = [UIColor redColor];

cell.backgroundColor = [UIColor redColor];

我在 IB 中设置了所有布局/字体/背景。知道为什么这在这种情况下不起作用吗?

为什么我需要修改contentViewbackgroundColor而不是backgroundView的?

这似乎是一个普遍的问题。有人可以为我指出正确的方向,以(最终)了解如何在表格视图单元格中处理背景颜色。

【问题讨论】:

    标签: ios uitableview cocoa-touch interface-builder


    【解决方案1】:

    要更改单元格的背景颜色,您必须在willDisplayCell:forRowAtIndexPath: 方法中进行。概述底部附近的UITableViewCell documentation 中提到了这一点。所以你需要:

    - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
    {
        cell.backgroundColor = [UIColor redColor];  
    }
    

    contentView 只是推荐的用于放置自定义控件的子视图,以便在进行表格编辑时单元格得到正确布局。

    【讨论】:

    • 感谢信息。但是,为什么 IB 中的设置不起作用?我只在控制器中设置了 label.text。并设置背景 IB 在所有笔尖(UIView)中都有效,但不适用于 UITableViewCell。
    • 目前无法确认,但 UITableViewCell 似乎是一个特例。在用于 willDisplayCell 和自定义单元格的 Apple 文档中,它提到使用这种方法,该方法称为“在表格视图完成后根据选择设置颜色等”。如果您在代码中创建 UITableViewCell 的自定义子类但现在无法检查它,它可能会起作用。
    • 好的,所以我只是在代码中设置它。感谢您提供最出色的帮助。
    • 您现在可以简单地设置 cell.contentView.backgroundColor,例如在 cellForRowAtIndexPath:
    • ...但请注意:Xcode5 中的错误,如果您在 InterfaceBuilder 中设置颜色,Xcode5 会禁用表格行的整个颜色系统。愚蠢的。
    【解决方案2】:

    有一个更简单的解决方案:当您在 Interface Builder 中创建 UITableViewCell 时,只需拖放一个额外的 UIView,以便它覆盖您在 IB 中创建的整个 UITableViewCell。将您的附加 UI 元素放在这个附加的 UIView 之上。您可以将这个额外的UIView 设置为您喜欢的任何背景。

    StackOverflow 上有很多答案建议您使用以下代码行更改 UITableViewCell 的背景颜色:

    cell.contentView.backgroundColor = [UIColor redColor];
    

    如果您通过稍微调整contentView 的帧大小来为单元格添加阴影,您可能会发现这条线会同时改变单元格的背景颜色和阴影区域的颜色。

    【讨论】:

      猜你喜欢
      • 2013-12-20
      • 2011-06-02
      • 1970-01-01
      • 1970-01-01
      • 2012-06-04
      • 2014-03-29
      • 1970-01-01
      • 1970-01-01
      • 2012-06-05
      相关资源
      最近更新 更多