UITableView背景颜色设置两次

时间:2010-02-16 19:47:20

标签: iphone uitableview

我正在尝试创建一个带有alpha值的透明表。在我的主循环中,我创建一个背景图像,将其添加到主窗口,然后创建一个透明的backgroundColor的UITableView并将其添加到主窗口。由于某种原因,tableView背景颜色在具有条目的单元格上被设置两次。 (即具有条目的单元格的alpha值为0.8而不是0.4)

在我的UITableView init方法中,这是我的代码

self.tableView.backgroundColor = [UIColor colorWithWhite:1 alpha:0.4];
[self.tableView setNeedsDisplay];

这在很大程度上起作用,除了一些奇怪的原因,具有条目的单元格不如没有条目的单元格透明

我已尝试将以下内容放入我的cellForRowAtIndexPath方法中:(尝试了所有单元格的子视图以确定)

cell.backgroundView.backgroundColor = [UIColor clearColor];
cell.contentView.backgroundColor = [UIColor clearColor];
cell.textLabel.backgroundColor = [UIColor clearColor];
[cell.backgroundView setNeedsDisplay];
[cell.contentView setNeedsDisplay];
[cell.textLabel setNeedsDisplay];

这没有做任何事情来解决这个问题。我在网上广泛搜索过,但似乎没有其他人遇到过这个问题;任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:0)

出于某种原因,UITableView会在tableView:cellForRowAtIndexPath:委托方法之间重置单元格的背景颜色并显示它。

尝试实施tableView:willDisplayCell:forRowAtIndexPath:并将单元格的背景颜色设置为透明。

  

表视图在使用单元格绘制行之前将此消息发送到其委托,从而允许委托在显示之前自定义单元格对象。此方法为委托提供了覆盖表视图前面设置的基于状态的属性的机会,例如选择和背景颜色。委托返回后,表视图仅设置alpha和frame属性,然后仅在行滑入或滑出时为其设置动画。

答案 1 :(得分:0)

如果您可以将背景效果重定位到tableView后面的不同视图,则可以将tableView的backgroundColor设置为clearColor。这也将用于contentView。

(并且请记住,为什么表的默认配置使用不透明视图有性能原因。)

答案 2 :(得分:0)

我遇到了同样的问题,唯一对我有用的是:

tableView.backgroundView = [[[UIView alloc]init]autorelease];