在iOS 7中如何使UITableView的背景透明

24

我正在使用iOS 7 beta检查我的应用程序。我已将UITableView的背景颜色设置为透明色,但仍然显示白色背景。 是否有其他方法使它透明?


10
我不同意这个问题被关闭。它非常相关。我想回答这个问题。 - Lee Probert
您需要使用tableView:willDisplayCell:forRowAtIndexPath:委托方法在Table中设置单元格的功能。特别是如果您正在使用来自旧项目的旧nibs。 - Lee Probert
关闭这个问题的决定确实是一个非常值得质疑的决定 - 为什么这被认为是太过局限性了?而且请注意,在3个月内已经有超过11000次的浏览量... - TheEye
当这个问题被发布时,iOS 7还在NDA保密协议之下。这可能是为什么它被关闭的原因。这个人应该询问他们签署了NDA的产品的问题。 - tentmaking
4个回答

11

我无法让它工作,但是以下内容完美地工作:

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

显然,单元格内部存在一个标记来跟踪颜色是否已经设置。在上述使用 clearColor 设置之前和之后使用 getRed:green:blue:alpha 得到的结果是相同的,但是上述代码确实具有将单元格背景从白色转换为透明的预期效果。 - Hot Licks
这也是交替背景颜色的完美位置。 - jfgrang

10
将tableview的backgroundColor设置为透明颜色在iOS 7上完全正常工作。请查看截图,可以看到当tableview透明时,表格单元格的分隔线也是可见的。

8
明白了,我将为tableview的背景设置透明颜色,并且还需要为tableview的单元格设置透明颜色。谢谢! - user1113101
2
谢谢。只是想提供我的意见,在iOS 6或更早的版本中,默认背景是透明的,这就是为什么如果不改变任何东西,在iOS 6上你仍然有透明背景,在iOS上你会得到白色背景。所以只需将所有清晰颜色设置为确保它在任何地方都是一样的。 - Dam
21
我也遇到了同样的问题,我正在使用从nib加载的自定义单元格,在接口构建器中将其背景颜色设置为透明仍然会出现白色背景。我通过在cellForRow中将背景颜色设置为透明来解决这个问题。 - 0xWood
2
@Allwood,我也遇到了同样的问题,在IB中尝试了几个小时,最后通过直接在应用程序代码中添加clearColor解决了。 - Leonardo
4
我有一个通用应用。对于iPhone,在awakeFromNib中设置backgroundColor属性就足够了,但是对于iPad,我不仅需要在awakeFromNib中设置backgroundColor,还要在setSelected:animated:中设置contentView的背景颜色。希望这能帮助到某些人。(请注意,此功能现已非测试版!) - livingtech
显示剩余4条评论

8
相信或不相信,将以下语句添加到 cellForRowAtIndexPath 中,将导致 iOS 7 采用 XIB 指定的颜色:
cell.backgroundColor = cell.backgroundColor;

谢谢您发布这个! - Eliot Arntz
虽然我们没能解决这个问题,但它可以通过以下代码解决:cell.backgroundColor = [UIColor clearColor]; - XIII

1
在我的XCode 5 Storyboard中,我还需要将表视图属性中的“View”部分的背景颜色设置为透明。

UITableView 扩展了 UIScrollView。它没有自己的 scrollView 属性。 - jowie
抱歉,我指的是Storyboards。里面有一个“Scroll View”的部分:http://screencast.com/t/UauSjNq76g。请取消您的反对票。 - Matt Baker
但看起来似乎这也不是我想要的。我必须在一般的“视图”部分上设置背景属性,而不是滚动视图。 - Matt Baker
明白了,那我收回之前的话 :) - jowie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接