如何创建具有透明背景的UITableViewCell


73

我正在尝试将a的背景色设置UITableViewCell为透明。但是似乎没有任何作用。我在中有一些图像/按钮,tableViewCell并且我想使白色grouptableview背景消失,以使图像和按钮具有“浮动”效果(好像它们不在tableview)。

知道如何实现吗?

Answers:


123

如果其他两个选项均无效,请尝试以下操作

UIView *backView = [[[UIView alloc] initWithFrame:CGRectZero] autorelease];
backView.backgroundColor = [UIColor clearColor];
cell.backgroundView = backView;

14
myTable.backgroundColor = [UIColor clearColor]; 为我工作!谢谢
sjobe

7
这对我也有效,尽管我还必须使用:cell.backgroundColor = [UIColor clearColor];
Mirko Froehlich

4
我也必须使用cell.textLabel.backgroundColor = [UIColor clearColor]!
Casebash

注意:当您还希望消除UITableViewStyleGrouped样式单元格周围的BORDER时,此方法有效。(此注释可帮助Google在查找UITableViewStyleGrouped并清除时查找此答案。)
Paul Cezanne 2012年

1
您不必创建背景视图。默认情况下它在那里。cell.backgroundView.background = [UIColor clearColor]就足够了。你也可以做self.backgroundColor = [UIColor clearColor]; ,但是可以在Interface Builder
Moose

43

实际上,这是在UITableViewCell的文档中回答的。因此,尽管您必须在控件上设置透明性,但必须根据以下设置实际的单元格背景颜色。

“注意:如果您想更改单元格的背景色(通过通过UIView声明的backgroundColor属性设置单元格的背景色),则必须在委托的tableView:willDisplayCell:forRowAtIndexPath:方法中进行操作,而不能在数据源的tableView:cellForRowAtIndexPath:在iOS 3.0中,更改组样式表视图中单元格的背景色的效果与以前的操作系统版本不同,现在会影响圆角矩形内的区域外面的区域。”

https://developer.apple.com/documentation/uikit/uitableviewcell


你救了我的命。这是唯一有效的解决方案。
罗伯托·孔戴·罗西托

1
如果将获得奥斯卡编码奖,那么您现在将获得奥斯卡奖!
Sjakelien'2

30

从这些文章开始,以正确设置背景色:

http://howtomakeiphoneapps.com/2009/03/how-to-add-a-nice-background-image-to-your-grouped-table-view/

http://pessoal.org/blog/2009/02/25/customizing-the-background-border-colors-of-a-uitableview/

然后尝试以下所有行:

[[cell contentView] setBackgroundColor:[UIColor clearColor]];
[[cell backgroundView] setBackgroundColor:[UIColor clearColor]];
[cell setBackgroundColor:[UIColor clearColor]];

UITableViewCell中隐藏了多个视图。这应该使所有方式都清晰明了。


完美地工作...除了一个错字:setBbackgroundColor => setBackgroundColor
Michael Z

1
cell.contentView的backgroundColor似乎是我真正的钥匙。(仅在iOS7上确认)
bitwit

你太棒了。如果可以的话,+ 100
Katushai 2014年

27
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{

    cell.backgroundColor = [UIColor clearColor];
    cell.backgroundView.backgroundColor = [UIColor clearColor];
}

1
如果表格视图具有背景色,并且您希望单元格是透明的,以便可以看到表格视图的背景色,那么这是正确的解决方案。
山姆·索菲斯

这怎么不是唯一的答案。奇迹般有效。
齐亚2014年

19

我有一个简单的解决方案

Objective-C版本:

cell.backgroundColor = [UIColor clearColor];

迅捷版:

cell.backgroundColor = UIColor.clearColor()

1
但始终将其设置在内部-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
Sathe_Nagaraja

11

默认情况下,UITableViewCell的背景为白色。这样myCell.backgroundColor = [UIColor clearColor];会使您的UITableViewCell透明,但是您不会感到有区别,因为默认情况下,UITableView(UITableViewCell的竞争者)也具有白色背景。

如果您想查看UIView背景,则必须使单元格和表格背景透明:

myTableView.backgroundColor = [UIColor clearColor];
myTableCell.backgroundColor = [UIColor clearColor];

马丁·马加基安


2

我遇到了一个问题,我的自定义tableviewcell backgroundimage覆盖了白色标签背景,我尝试了一切,最后在viewWillAppear中设置背景以清除颜色,从而解决了问题。

      - (void)viewWillAppear:(BOOL)animated
    {
[super viewWillAppear:animated];
    self.tableView.backgroundColor = [UIColor clearColor]; // if this is not here, cell background image is covered with a white rectangle :S
    }

然后在rowForCellAtIndexPath中设置背景图片:

 if(!cell) {
    cell = [[[UITableViewCell alloc] initWithFrame: ...
    UIImageView *cellBG = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"cellbg.jpg"]];
    [cell setBackgroundView:cellBG];
    [cellBG release];
}


0

共有3个步骤:

  1. cell.contentView.backgroundColor = UIColor.clear
  2. 在“图形”部分的属性检查器中取消选中表视图单元格的不透明复选框。您可以通过在情节提要中单击表格视图单元原型并打开属性检查器来找到。向下滚动,您将找到它。
  3. 从与步骤2相同的位置的下拉菜单中选择“背景”作为“清除颜色”。
  4. 运行你的应用

0

Swift 5.1解决方案

let cell = tableView.dequeueReusableCell(withIdentifier: "cellIdentifier", for: indexPath)
cell.backgroundColor = UIColor.clear

-1

这是我在Swift 4.1中的解决方案:

override func viewDidLoad() {
    super.viewDidLoad()
    tableView.backgroundView = UIImageView(image: "Image")
}

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    cell.backgroundColor = UIColor.clear
{
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.