我正在尝试将a的背景色设置UITableViewCell
为透明。但是似乎没有任何作用。我在中有一些图像/按钮,tableViewCell
并且我想使白色grouptableview
背景消失,以使图像和按钮具有“浮动”效果(好像它们不在tableview
)。
知道如何实现吗?
Answers:
如果其他两个选项均无效,请尝试以下操作
UIView *backView = [[[UIView alloc] initWithFrame:CGRectZero] autorelease];
backView.backgroundColor = [UIColor clearColor];
cell.backgroundView = backView;
实际上,这是在UITableViewCell的文档中回答的。因此,尽管您必须在控件上设置透明性,但必须根据以下设置实际的单元格背景颜色。
“注意:如果您想更改单元格的背景色(通过通过UIView声明的backgroundColor属性设置单元格的背景色),则必须在委托的tableView:willDisplayCell:forRowAtIndexPath:方法中进行操作,而不能在数据源的tableView:cellForRowAtIndexPath:在iOS 3.0中,更改组样式表视图中单元格的背景色的效果与以前的操作系统版本不同,现在会影响圆角矩形内的区域外面的区域。”
https://developer.apple.com/documentation/uikit/uitableviewcell
从这些文章开始,以正确设置背景色:
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中隐藏了多个视图。这应该使所有方式都清晰明了。
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
cell.backgroundColor = [UIColor clearColor];
cell.backgroundView.backgroundColor = [UIColor clearColor];
}
我有一个简单的解决方案
Objective-C版本:
cell.backgroundColor = [UIColor clearColor];
迅捷版:
cell.backgroundColor = UIColor.clearColor()
默认情况下,UITableViewCell的背景为白色。这样myCell.backgroundColor = [UIColor clearColor];
会使您的UITableViewCell透明,但是您不会感到有区别,因为默认情况下,UITableView(UITableViewCell的竞争者)也具有白色背景。
如果您想查看UIView背景,则必须使单元格和表格背景透明:
myTableView.backgroundColor = [UIColor clearColor];
myTableCell.backgroundColor = [UIColor clearColor];
马丁·马加基安
我遇到了一个问题,我的自定义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];
}
如果您使用情节提要,请确保取消选中原型UITableViewCells的“不透明”
共有3个步骤:
这是我在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
{