我试图将 UITableViewCell的背景颜色设置为透明。但似乎没什么效果。我有一些图片/按钮内的 tableViewCell,我想使白色的 grouptableview背景消失,以获得一个’浮动’的图像和按钮效果(好像他们不在 tableview)。
UITableViewCell
tableViewCell
grouptableview
tableview
你知道这是怎么做到的吗?
从这些文章开始,正确设置背景颜色:
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 中隐藏的视图不止一个。这应该能把挡你路的都说清楚。
如果其他两个选项都不起作用,试试这个
UIView *backView = [[[UIView alloc] initWithFrame:CGRectZero] autorelease]; backView.backgroundColor = [UIColor clearColor]; cell.backgroundView = backView;
我有一个问题,我的自定义 tableviewcell 背景图片与白色标签背景叠加,我尝试了一切,最后设置背景清晰的颜色在视图 WillAppear 的技巧。
- (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]; }
这个问题实际上在 UITableViewCell 的文档中得到了回答。因此,虽然您必须在控件上设置透明度,但是实际的单元格背景颜色 必须的将在下面设置。
注意: 如果你想改变单元格的背景颜色(通过 UIView 声明的 background Color 属性设置单元格的背景颜色) ,你必须在数据源的 tableView: willDisplayCell: forRowAtIndexPath: 方法中而不是 tableView: cellForRowAtIndexPath: 中进行。对组样式表视图中单元格的背景颜色的更改在 iOS 3.0中产生的效果与以前版本的操作系统不同。它现在影响的是圆角矩形内部的区域,而不是外部的区域。”
Https://developer.apple.com/documentation/uikit/uitableviewcell
默认情况下,UITableViewCell 的背景是白色的。执行 myCell.backgroundColor = [UIColor clearColor];操作将使 UITableViewCell 透明,但是您不会感觉到不同,因为 UITableView (UITableViewCell 的容器)在默认情况下也有一个白色背景。
myCell.backgroundColor = [UIColor clearColor];
如果你想看到你的 UIView 背景,你必须让你的单元格和表格背景透明:
myTableView.backgroundColor = [UIColor clearColor]; myTableCell.backgroundColor = [UIColor clearColor];
Martin Magakian
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { cell.backgroundColor = [UIColor clearColor]; cell.backgroundView.backgroundColor = [UIColor clearColor]; }
我有一个简单的解决方案
目标-c 强 > 版本:
cell.backgroundColor = [UIColor clearColor];
Swift 版本:
cell.backgroundColor = UIColor.clearColor()
如果您使用故事板,请确保取消选中“不透明”为您的原型 UITableViewCell
以下是我在 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 {
有三个步骤:
Swift 5.1解决方案
let cell = tableView.dequeueReusableCell(withIdentifier: "cellIdentifier", for: indexPath) cell.backgroundColor = UIColor.clear
在把我的大部分头发都拔掉之后,这对 xCode 13/Swift 5.1来说变得非常简单。有两件事需要改变。
在你的编号 OfRowsInSection 中,加上:
Background Color = UIColor.clear
看起来像这样:
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { tableView.backgroundColor = UIColor.clear return 40 }
然后在你的单元格 ForRowAt 中添加:
背景颜色 = UIColor.clear
所以看起来:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "cell") cell?.backgroundColor = UIColor.clear return cell! }
就是这样。真不敢相信我的眼睛。 :)
我已经迟到了,但是我会分享我的发现,因为它们和这里的所有答案都不一样。在花了两个小时尝试不同的解决方案之后,我仅仅通过调整 Interface Builder 中的两个属性就成功地实现了 table cell 的透明性:
我不需要改变代码,对于那些仍在使用 Interface Builder 的人来说,额外的好处是表格单元格显示为透明的(而不是白色的)背景,当单元格内容项的颜色是白色时,这一点很重要: