uitableviewcell背景

时间:2011-04-29 09:40:03

标签: iphone objective-c uitableview

我有一个UItableView(分组样式)。我想自定义它,使它看起来像一个“粘贴它”或一个带有黄色背景界面的“发布它”。

因此添加了以下代码

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    UIView *backgroundView = [[[UIView alloc] initWithFrame:CGRectZero] autorelease];
    backgroundView.backgroundColor = [UIColor yellowColor];
    cell.backgroundView = backgroundView;
    cell.textLabel.backgroundColor=[UIColor yellowColor];
} 

这确实奏效了。我能够实现黄色背景,但缺少分隔线。 some1可以帮助我吗?

这是最好的方法吗?或者我应该为单元格创建一个图像并将其用作backgroundView?

5 个答案:

答案 0 :(得分:6)

实际上,上述答案都没有(我相信)是正确的。根据doco:

  

注意:如果要更改单元格的背景颜色(通过UIView声明的backgroundColor属性设置单元格的背景颜色),必须在{{1}中执行此操作委托的方法而不是数据源的tableView:willDisplayCell:forRowAtIndexPath:。组样式表视图中单元格背景颜色的更改在iOS 3.0中具有与以前版本的操作系统不同的效果。它现在影响圆角矩形内的区域而不是它外面的区域。

所以,不要在tableView:cellForRowAtIndexPath:中致电setBackgroundColor,而应该在tableView:cellForRowAtIndexPath:中这样做:

tableView:willDisplayCell:forRowAtIndexPath:

我发现这个作品非常完美,并且适合其他表格单元格渲染的工作方式。无需添加任何背景视图或任何其他视图。

答案 1 :(得分:2)

我真的很惊讶能够设置背景颜色。设置UITableViewCell背景的正确方法是:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
    cell.backgroundColor = [UIColor yellowColor];
}

另外,我注意到你的cellForRowAtIndexPath方法中没有任何重用代码。我希望你没有粘贴它,但这是一个很大的禁忌。 Table View Programming Guide

答案 2 :(得分:0)

这是否适合您放入“cellForRowAtIndexPath”?

....................

if (cell == nil) {

....................

    cell.backgroundColor = [UIColor yellowColor];

....................

    tableView.backgroundColor=[UIColor clearColor];

}

答案 3 :(得分:0)

将tableview的separatorStyle设置为UITableViewCellSeparatorStyleSingleLine

应该是下面的内容。

myTableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;

答案 4 :(得分:0)

过时。

为什么要创建自定义背景视图?如果您只想获得黄色,可以使用UIColor colorWithRed: green: blue: alpha:创建自己的颜色来自定义颜色,然后将其添加到cell setBackgroundColor:UIColor。如果在分组表视图中添加背景视图,似乎完全覆盖了分隔符。如果你仍然希望自定义UIView作为背景,我建议添加一个看起来像你的分隔符的自定义tableViewCell。您可以在cellForRowAtIndexPath

中对此进行规范

我的第一个建议的工作代码:

[cell setBackgroundColor:[UIColor yellowColor]];