使用背景颜色方法设置单元格的背景图像不起作用

时间:2012-07-27 06:23:32

标签: iphone uitableview background-image

我有一个表格视图,其中有一些'n'个单元格。我的问题是单元格的背景图像!

我已经意识到UITableViewCell的苹果文档具体说:

注意:如果要更改单元格的背景颜色(通过UIView声明的backgroundColor属性设置单元格的背景颜色),必须在tableView中执行此操作:willDisplayCell:forRowAtIndexPath:method of委托,而不是在数据源的tableView:cellForRowAtIndexPath:中。

以上描述也可以看作here

但我关心的不是改变单元格的颜色,而是设置单元格的背景图像。我们知道我们可以利用背景颜色属性设置背景图像,即:。

if (cell == nil) 
{
   cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:kCellIdentifier] autorelease];
   cell.backgroundColor = [[UIColor alloc]initWithPatternImage:[UIImage imageNamed:@"buttonbg.png"]];
}

但是使用背景颜色将背景图像设置为表格视图单元格不起作用 当我试图更改图像而不是颜色时,为什么上述方法/属性在数据源方法中不起作用(索引路径中的行的单元格)

另外令我惊讶的是,我发现使用图像视图并将视图设置为单元格的背景视图是完美的,同样的建议在此link由Mr.Ammy Worral提出。即:

UIImage *cellImage = [UIImage imageNamed:kCellImage];
UIImageView *cellImageView = [[UIImageView alloc]initWithImage:cellImage];
[cell setBackgroundView:cellImageView];

但我怀疑的是为什么背景图像不能与细胞的背景颜色方法一起使用!

需要对此进行澄清!

提前感谢所有人:)

2 个答案:

答案 0 :(得分:1)

它不起作用,因为UITableView在从cellForRowAtIndexPath:返回它后对单元格的外观做了一些修改。解决方案是子类化您的单元格并覆盖layoutSubviews方法并在那里进行自定义。

答案 1 :(得分:1)

tableview会自动将单元格的背景颜色设置为自己的颜色。它确实是AFTER -tableView:cellForRowAtIndexPath:当然:) 您有两种选择: 1)在你的单元格中添加一个额外的视图并设置它的背景颜色(几乎你所做的) 2)在您的数据源/委托中实现-tableView:willDisplayCellAtIndexPath:或者在这些行中的某些内容,参见苹果文档中的确切名称)并手动设置单元格的背景颜色。