我将 UITableViewCell 子类化以将单元格背景颜色设置为我需要的颜色:
。H
@interface DataViewCustomCell : UITableViewCell {
UIColor* cellColor;
UIColor* standardColor;
}
- (void) setCellColor: (UIColor*)color;
@end
.m
@implementation DataViewCustomCell
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
// Initialization code
}
return self;
}
- (void) setCellColor: (UIColor*)color
{
cellColor = color;
}
- (void) spreadBackgroundColor: (UIView*)that withColor: (UIColor*)bkColor
{
NSEnumerator *enumerator = [that.subviews objectEnumerator];
id anObject;
while (anObject = [enumerator nextObject]) {
if([anObject isKindOfClass: [UIView class]])
{
((UIView*)anObject).backgroundColor = bkColor;
[self spreadBackgroundColor:anObject withColor:bkColor];
}
}
}
- (void) layoutSubviews {
[super layoutSubviews]; // layouts the cell as UITableViewCellStyleValue2 would normally look like
if(!self.selected && NULL != cellColor)
{
[self spreadBackgroundColor:self withColor:cellColor];
}
}
- (void)dealloc
{
[super dealloc];
}
@end
当我用我想要的颜色调用 setCellColor 时,一切顺利,但是当我没有找到一种方法来设置原始颜色时:当我用 UITableViewStylePlain 样式设置
[UIColor clearColor]
时,结果并不好看。如何在不丢失单元格分隔线的情况下取得良好的效果?
最佳答案
我遇到了类似的问题,并找到了 edo42 的答案。但是,我当时遇到了一个问题,即单元格中文本后面的背景没有显示我设置的背景颜色。我相信这是由于样式:UITableViewCellStyleSubtitle。
如果其他人偶然发现这个问题,我相信在这个问题中可以找到更好的解决方案:
UITableViewCellStyleSubtitle标签的BackgroundColor?
BackgroundColor of UITableViewCellStyleSubtitle labels?
答案转载于此:
要更改表格 View 单元格的背景颜色,您需要在 tableView:willDisplayCell:forRowAtIndexPath: 而不是 tableView:cellForRowAtIndexPath: 中设置它,否则它不会有任何效果,例如:
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
cell.backgroundColor = [UIColor whiteColor];
}