在普通样式的 UITableView 中更改自定义 UITableViewCell 单元格的背景颜色

Posted

技术标签:

【中文标题】在普通样式的 UITableView 中更改自定义 UITableViewCell 单元格的背景颜色【英文标题】:Changing background color of a custom UITableViewCell cell in a plain styled UITableView 【发布时间】:2011-07-08 08:19:40 【问题描述】:

我正在尝试以普通样式 UITableView 更改自定义 UITableViewCell 的背景颜色。

我已经阅读了其他类似的问题,并且我在我的委托方法中:

- (UITableViewCell *)tableView:(UITableView *)tableView
         cellForRowAtIndexPath:(NSIndexPath *)indexPath

我设置了cell.backgroundColor = [UIColor...]。问题是这只适用于分组样式UITableView

注意:我想以编程方式而不是在我的 .xib 文件中执行此操作的原因是因为我希望不同的单元格有不同的背景颜色。

【问题讨论】:

尝试更改内容视图的背景颜色。 cell.contentView.backGroundColor=[UIColor ...]; 【参考方案1】:

也许您可以在设置颜色之前添加cell.contentView.backgroundColor = [UIColor clearColor]

原因是背景视图在底部。内容视图位于顶部。

【讨论】:

成功了,谢谢。知道 cell.backgroundColor 和 cell.contentView.backgroundColor 之间有什么区别吗? 该单元格有两层。一层是背景视图,另一层是内容视图。背景视图上有苹果提供的一些按钮。如果您尝试 tableView.editing = YES,您可以看到删除按钮。它在背景视图上 抱歉,仔细一看,这不起作用。我确实将 cell.contentView.backgroundColor 设置为我直接想要的颜色,并且确实有效。所以请改变你的答案。谢谢 啊,当你声明你的 tableview 时尝试设置 yourtableview.editing = YES。看看会发生什么【参考方案2】:

在以下委托方法中更改颜色:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath 
    if (...)
        cell.backgroundColor = [UIColor blueColor];
     else 
        cell.backgroundColor = [UIColor whiteColor];
    

【讨论】:

【参考方案3】:
// set selection color
UIView *myBackView = [[UIView alloc] initWithFrame:cell.frame];

myBackView.backgroundColor = [UIColor colorWithRed:1 green:1 blue:0.75 alpha:1];

[cell.contentView addSubview:myBackView];

[myBackView release];

像这样根据需要更改每个单元格

【讨论】:

以上是关于在普通样式的 UITableView 中更改自定义 UITableViewCell 单元格的背景颜色的主要内容,如果未能解决你的问题,请参考以下文章

更改单元格中的数据后,UITableView 中的自定义单元格将无法正确重新加载

为 tableview (UITableView) 绘制一个自定义单元格,更改颜色和分隔符颜色和宽度

自定义 UITableView 部分索引

在ios的uitableview中自定义单元格编辑样式

如何为 UITableView 设置分隔符样式 [重复]

在uitableview中选择时如何更改自定义单元格图像和标签字体颜色?