我有一个表格视图,其中有一些'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];
但我怀疑的是为什么背景图像不能与细胞的背景颜色方法一起使用!
需要对此进行澄清!
提前感谢所有人:)
答案 0 :(得分:1)
它不起作用,因为UITableView在从cellForRowAtIndexPath:返回它后对单元格的外观做了一些修改。解决方案是子类化您的单元格并覆盖layoutSubviews方法并在那里进行自定义。
答案 1 :(得分:1)
tableview会自动将单元格的背景颜色设置为自己的颜色。它确实是AFTER -tableView:cellForRowAtIndexPath:当然:) 您有两种选择: 1)在你的单元格中添加一个额外的视图并设置它的背景颜色(几乎你所做的) 2)在您的数据源/委托中实现-tableView:willDisplayCellAtIndexPath:或者在这些行中的某些内容,参见苹果文档中的确切名称)并手动设置单元格的背景颜色。