如何为UITableView中的单元格设置不同的背景颜色 (特别是七个细胞的彩虹色)
答案 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];
当它真正将背景设置为白色时,看起来它没有做任何事情。