UITableView清除背景

我意识到,iOS 7还没有正式发布,我们不应该讨论,但我疯了试图找出这个问题。 在iOS 6上,我的表格视图是透明的,看起来不错。 第一次运行iOS 7,背景是白色的。

我已经尝试使桌面backgroundColor,单元格颜色等等,以UIColor clearColor但没有改变。

如何解决这个问题?

桌子

  // Fix for iOS 7 to clear backgroundColor cell.backgroundColor = [UIColor clearColor]; cell.backgroundView = [[UIView new] autorelease]; cell.selectedBackgroundView = [[UIView new] autorelease]; 

在cellForRowAtIndexPath中

此外,请确保您的tableview实际上有透明的背景(在故事板): 在这里输入图像说明

把这个:

 cell.backgroundColor = [UIColor clearColor]; 

在这个部分:

 cellForRowAtIndexPath 

尝试设置backgroundView先到零。

 [self.tableView setBackgroundView:nil]; [self.tableView setBackgroundColor:[UIColor clearColor]]; 

不知道这是iOS7的文档更改或一直在那里,只是不影响背景颜色,但每UITableView类参考@property backgroundView

“您必须将此属性设置为零来设置表视图的背景颜色。”

编辑:更正的代码语法

这已被回答,但在许多方面不正确。

你需要实现下面的委托方法:

  - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { [cell setBackgroundColor:[UIColor clearColor]]; } 

您不能将修复程序放在cellForRowAtIndexPath中,因为这是在单元格渲染之后,并且在背景被设置为清除(在较慢的设备上)之前它将闪烁白色背景。

使用这个委托方法,你的问题就解决了!

实际上,根据文档( UITableViewCell类参考 ),更改单元格背景颜色的官方正确位置是不同的:

无论您使用预定义还是自定义单元格,都可以使用backgroundView属性或通过更改inheritance的backgroundColor属性来更改单元格的背景。 在iOS 7中,默认情况下,单元格具有白色背景; 在早期版本的iOS中,单元格inheritance封闭表视图的背景颜色。 如果要更改单元格的背景颜色,请在表视图委托的tableView:willDisplayCell:forRowAtIndexPath:方法中执行此操作。

这是一个相当令人沮丧的问题。 这是我目前的解决scheme:

将其添加到您的UITableViewCell子类。

 - (void)didMoveToSuperview { [super didMoveToSuperview]; self.backgroundColor = [UIColor clearColor]; } 

这适用于我在iOS7 +:

 self.tableView.backgroundColor =[UIColor blueColor]; self.tableView.opaque = NO; self.tableView.backgroundView = nil;` 

然后在cellForRowAtIndexPath:

 cell.backgroundColor = [UIColor clearColor]; 

试试这个代码片段

 cell.contentView.backgroundColor = [UIColor clearColor]; cell.backgroundColor = [UIColor colorWithWhite:1.0 alpha:0.5]; 

这只对我工作,当我编辑一个清晰的背景颜色为每个单元格和清晰的颜色表本身..两个程序化

为表格设置清晰的颜色:

 override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. initMenu() myTableView.backgroundColor = UIColor.clearColor() } 

设置单元格的颜色:

 func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCellWithIdentifier("tablecellid", forIndexPath: indexPath) cell.backgroundColor = UIColor.clearColor() return cell } 

第一套

 tableView.backgroundColor = [UIColor clearColor]; 

第二套

 tableCell.backgroundColor = [UIColor clearColor]; 

为表格视图创buildIB Outlet @IBOutlet weak var yourTable:UITableView!

在视图中加载

 override func viewDidLoad() { yourTable.delegate = self yourTable.dataSource = self yourTable.backgroundColor = UIColor.clearColor() } 

如果你想清除单元格的颜色也做到这一点

 func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { cell.backgroundColor = UIColor.clearColor() } 

迅速3,4

 cell.backgroundColor = UIColor.clear 

在我的应用程序中,当我更新iOS 7时,我不得不将UITableViewCell类的backgroundColor设置为[UIColor clearColor]颜色。

尝试

 [myTable setSeparatorStyle:UITableViewCellSeparatorStyleNone]; [myTable setSeparatorInset:UIEdgeInsetsZero]; 

 cell.backgroundColor = [UIColor clearColor]; 

有一件事很好。 UITable的默认颜色似乎是白色的(我不知道为什么)

背景白色

但更好的改变。

在我的情况下,单元格是使用xib创build的。 看起来像xcode5上的接口生成器有麻烦设置clearColor到cell.backgroundColor。

我所需要做的就是确定

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { // get the cell from the nib //then force the backgroundColor cell.backgroundColor = [UIColor clearColor] return cell; } 

只需在视图背景上为表格和单元格select“清除颜色”即可。

 // Fix iOS 7 clear backgroundColor compatibility // I Think this two lines only are enough cell.backgroundColor = [UIColor clearColor]; cell.selectedBackgroundView = [[UIView new] autorelease]; 

迅速3

 override func viewDidLoad() { super.viewDidLoad() tableView.backgroundColor = UIColor.clear } 

 tableView.backgroundColor = [UIColor clearColor]; 

在viewDidLoad中。

如果这不起作用,请尝试:

 tableView.backgroundView = nil; 

在迅速3

 override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "CustomCell", for: indexPath) cell.backgroundColor = .clear cell.backgroundView = UIView() cell.selectedBackgroundView = UIView() return cell }