如何在UITableView中设置单元格的背景颜色?
感谢。
答案 0 :(得分:11)
我知道这是一个老帖子,但我相信有些人仍在寻求帮助。您可以使用它来设置单个单元格的背景颜色,最初有效:
-(UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath {
[cell setBackgroundColor:[UIColor lightGrayColor]];
然而,一旦你开始滚动,iphone将重复使用不同背景颜色的单元格(如果你试图替换它们)。您需要调用tableView:willDisplayCell:forRowAtIndexPath。这样,在加载重用标识符之前设置背景颜色。你可以这样做:
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
cell.backgroundColor = ([indexPath row]%2)?[UIColor lightGrayColor]:[UIColor whiteColor];
}
最后一行只是一个浓缩的if / else语句。祝你好运!
答案 1 :(得分:2)
<强>更新强>
显然,现有的UITableViewCell框架很难改变单元格的背景颜色,并且通过所有状态更改(编辑模式等)使其运行良好。
已在this SO question发布了一个解决方案,并且它正在几个论坛上被称为“Apple工程师批准的唯一解决方案”。它涉及子类化UITableViewCell并为子类化单元格的backgroundView
属性添加自定义视图。
原帖 - 此解决方案无法正常运行,但在某些情况下可能仍然有用
如果您已经拥有UITableViewCell对象,只需更改其contentView
的{{1}}属性。
如果您需要使用自定义背景颜色创建UITableViewCells,则该过程会稍长一些。首先,您需要为UITableView创建数据源 - 这可以是实现backgroundColor
协议的任何对象。
在该对象中,您需要实现UITableViewDataSource
方法,该方法在给定表中单元格位置的NSIndexPath时返回UITableViewCell。创建该单元格时,您需要更改其tableView:cellForRowAtIndexPath:
的{{1}}属性。
不要忘记将UITableView的backgroundColor
属性设置为数据源对象。
有关详情,请参阅以下API文档:
tableView:cellForRowAtIndexPath
contentView
backgroundColor
dataSource
请注意,所有这三个链接都需要注册为Apple开发人员。
答案 2 :(得分:0)
backgroundView一直在底部。它是显示圆角和边缘的那个。你想要的是位于backgroundView之上的contentView。它涵盖了细胞通常的白色区域。
答案 3 :(得分:0)
这对我很有用:
NSEnumerator *enumerator = [cell.subviews objectEnumerator];
id anObject;
while (anObject = [enumerator nextObject]) {
if( [anObject isKindOfClass: [ UIView class] ] )
((UIView*)anObject).backgroundColor = [UIColor lightGrayColor];
}
答案 4 :(得分:0)
我写的版本将在iPhone 3.0或更高版本中运行,否则将回退到白色背景。
在viewDidLoad
的{{1}}方法中,我们添加以下内容:
UITableViewController
在创建单元格时(在我的代码中这是我的self.view.backgroundColor=[UIColor clearColor];
// Also consider adding this line below:
//self.tableView.separatorColor=[UIColor clearColor];
)添加以下代码:
tableView:cellForRowAtIndexPath:
答案 5 :(得分:0)
您可以设置backgroundColor
的{{1}}。如果backgroundView
不存在,您可以为其创建一个。
backgroundView
答案 6 :(得分:0)
如果要将单元格的背景设置为图像,请使用以下代码:
// Assign our own background image for the cell
UIImage *background = [UIImage imageNamed:@"image.png"];
UIImageView *cellBackgroundView = [[UIImageView alloc] initWithImage:background];
cellBackgroundView.image = background;
cell.backgroundView = cellBackgroundView;