UITableView单元格背景颜色

时间:2011-05-07 13:14:35

标签: iphone

如何为UITableView中的单元格设置不同的背景颜色 (特别是七个细胞的彩虹色)

8 个答案:

答案 0 :(得分:83)

设置backgroundColor属性:

cell.backgroundColor = [UIColor redColor];

请注意,必须使用tableView:willDisplayCell:forRowAtIndexPath:方法(来自UITableViewCell reference)设置backgroundColor:

  

注意:如果要更改   细胞的背景颜色(通过设置   通过电池的背景颜色   backgroundColor属性声明   UIView)你必须在   的tableView:willDisplayCell:forRowAtIndexPath:   代表的方法而不是   tableView:cellForRowAtIndexPath:of   数据源。改变了   背景颜色的细胞   组样式表视图有效   在iOS 3.0中不同于   以前版本的操作   系统。它现在影响了里面的区域   圆角矩形代替   在它之外的区域。

使用indexPath参数实现彩虹效果。

答案 1 :(得分:9)

如果要根据实际单元格数据对象中的某个状态设置单元格颜色,则这是另一种方法:

如果将此方法添加到表视图委托:

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

然后在你的cellForRowAtIndexPath方法中你可以这样做:

if (myCellDataObject.hasSomeStateThatMeansItShouldShowAsBlue) {
    cell.contentView.backgroundColor = [UIColor blueColor];
}

这样可以节省必须在willDisplayCell方法中再次检索数据对象。

答案 2 :(得分:2)

不要忘记将tableView的背景颜色设置为clearColor。否则,不会显示clearColor的单元格,因为tableView的背景颜色默认为whiteColor。即使当单元格颜色变为clearColor时,也会显示whiteColor,因为tableView背景颜色仍然是whiteColor。 Remenber。

答案 3 :(得分:2)

您可以这样设置:

cell.contentView.backgroundColor = [UIColor colorWithRed:249.0/255 green:237.0/255 blue:224.0/255 alpha:1.0];

答案 4 :(得分:1)

非常确定UITableViewCell是UIView的子类,所以:

cell.backgroundColor = [UIColor blueColor];

对于可怕的彩虹色,这是一个例子:

static NSArray *colors = [NSArray arrayWithObjects:[UIColor redColor], [UIColor yellowColor], etc..., nil];
cell.backgroundColor = [colors objectAtIndex:indexPath.row];

答案 5 :(得分:1)

试试这个

cell.backgroundVIew.backgroundColor = [UIColor orangeColor];

答案 6 :(得分:1)

如果您已将UITableViewCell分类,则可以在self.backgroundColor中可靠地设置-layoutSubviews。至少根据我的经验,这适用于奇怪的情况,其中tableView:willDisplayCell:forRowAtIndexPath:没有。

答案 7 :(得分:0)

您可能会得出结论“willDisplayCell”仍然不像我最初那样工作。它最初对我不起作用的原因是因为我没有正确使用颜色。

不要忘记使用自定义颜色时需要除以255.0f:

[UIColor colorWithRed:44/255.0f green:50/255.0f blue:65/255.0f alpha:1];

以下内容将导致白色单元格:

//DON'T DO [UIColor colorWithRed:44 green:50 blue:65 alpha:1];

当它真正将背景设置为白色时,看起来它没有做任何事情。