在界面生成器中更改 UITableViewCell 背景颜色

Posted

技术标签:

【中文标题】在界面生成器中更改 UITableViewCell 背景颜色【英文标题】:Change UITableViewCell background color in Interface builder 【发布时间】:2013-04-03 14:43:30 【问题描述】:

我试图避免在我的 ios 项目中添加任何与视觉设置有关的代码,因为这是 Interface Builder 应该为您简化的。

所以我尝试在 IB 中设置原型单元,然后调用:

TableCell *cell = [self.tableView dequeueReusableCellWithIdentifier:@"TableCell"];

问题是如果我在 IB 中更改单元格的背景颜色,当我运行我的应用程序时它仍然是白色的。我可以很好地预设标签的颜色,但不能预设表格单元格中的背景颜色属性。

作为附加说明,我可以看到作为单元格内的 backgroundView 的 UIView 在断点并在初始化后检查变量后为空。

更新 我的印象是 IB 中的背景颜色选项基本上没用?我宁愿不相信。

【问题讨论】:

【参考方案1】:

很遗憾,您不能这样做。

更改tableView:willDisplayCell:forRowAtIndexPath:中单元格的背景颜色

来自UITableViewCell的文档:

注意:如果要更改单元格的背景颜色(通过 UIView 声明的 backgroundColor 属性设置单元格的背景颜色),您必须在委托的 tableView:willDisplayCell:forRowAtIndexPath: 方法中进行不在数据源的 tableView:cellForRowAtIndexPath: 中。更改组样式表视图中单元格的背景颜色在 iOS 3.0 中产生的效果与以前版本的操作系统不同。它现在会影响圆角矩形内的区域,而不是圆角矩形外的区域。

【讨论】:

如果这个选项基本上没用,为什么在 IB 中可用? 这也是我一直在问自己的问题......无论如何都要检查编辑的答案。【参考方案2】:

在界面生成器中,添加一个视图作为单元格的子视图,这将是您的背景视图。然后,您可以将所有标签或其他任何内容作为子视图添加到该视图。根据需要更改视图背景颜色。

【讨论】:

但是表格单元格已经有一个子视图,它应该是它的背景。我无法想象这种解决方法是最好的选择。 您知道 IB 不允许我将 uiview 作为子视图添加到 tablecell 的任何原因吗?【参考方案3】:

我认为这可能是 IB 中的一个错误。您可以将视图添加到控制器底部的该栏,然后将这些视图连接到单元格的 backgroundView 和 selectedBackgroundView 属性。但是,backgroundView 的颜色不起作用,而 selectedBackgroundView 的颜色却可以正常工作。如果您在代码中将背景视图添加到自定义表格视图单元格并给它一个背景颜色,那确实有效。

【讨论】:

以上是关于在界面生成器中更改 UITableViewCell 背景颜色的主要内容,如果未能解决你的问题,请参考以下文章

静态 UITableViewCell 背景颜色在 iPad 上总是白色

使用 .xib 设计 Self-Sizing UITableViewCell,单元格不会在界面生成器中自行调整

摆脱 UITableViewCell 中 UIButton 上的 imageView 色调

如何使用 Interface Builder 中的自定义 UITableViewCell?

缩进不适用于自定义 UITableViewCell

无法连接 UITableViewCell 自定义单元格 IBOutlet