我正在尝试将UITableViewCell
的背景颜色设置为透明。但似乎没有任何效果。我在tableViewCell
中有一些图像/按钮,我想让白色grouptableview
背景消失,以获得图像和按钮的“浮动”效果(好像它们不在{{1}内1}})。
知道如何实现这一目标吗?
答案 0 :(得分:121)
如果其他选项都不起作用,请尝试此
UIView *backView = [[[UIView alloc] initWithFrame:CGRectZero] autorelease];
backView.backgroundColor = [UIColor clearColor];
cell.backgroundView = backView;
答案 1 :(得分:42)
这实际上是在UITableViewCell的文档中回答的。因此,虽然您必须在控件上设置透明度,但实际的单元格背景颜色必须在下面设置。
“注意:如果要更改单元格的背景颜色(通过UIView声明的backgroundColor属性设置单元格的背景颜色),则必须在tableView中执行此操作:willDisplayCell:forRowAtIndexPath:委托方法而不是在tableView:cellForRowAtIndexPath:数据源。对于组样式表视图中单元格的背景颜色的更改在iOS 3.0中具有与以前版本的操作系统不同的效果。它现在影响到圆角矩形而不是它外面的区域。“
https://developer.apple.com/documentation/uikit/uitableviewcell
答案 2 :(得分:30)
从这些文章开始,正确设置背景颜色:
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中隐藏的视图不止一个。这应该使你所有的方式都清楚。
答案 3 :(得分:25)
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
cell.backgroundColor = [UIColor clearColor];
cell.backgroundView.backgroundColor = [UIColor clearColor];
}
答案 4 :(得分:18)
我有一个简单的解决方案
Objective-c 版本:
cell.backgroundColor = [UIColor clearColor];
Swift 版本:
cell.backgroundColor = UIColor.clearColor()
答案 5 :(得分:10)
默认情况下,UITableViewCell的背景为白色。做myCell.backgroundColor = [UIColor clearColor];
会使你的UITableViewCell透明但是你不会感觉到区别,因为默认情况下UITableView(你的UITableViewCell的竞争对手)也有白色背景。
如果你想看到你的UIView背景,你必须让你的细胞和你的桌子背景透明:
myTableView.backgroundColor = [UIColor clearColor];
myTableCell.backgroundColor = [UIColor clearColor];
Martin Magakian
答案 6 :(得分: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];
}
答案 7 :(得分:2)
如果您正在使用故事板,请务必取消选中原型UITableViewCells的“Opaque”
答案 8 :(得分:0)
共有3个步骤:
答案 9 :(得分:0)
Swift 5.1
的解决方案let cell = tableView.dequeueReusableCell(withIdentifier: "cellIdentifier", for: indexPath)
cell.backgroundColor = UIColor.clear
答案 10 :(得分:-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
{