3

尝试使用没有任何边框的透明单元格创建分组表视图。Tableview 的背景颜色从上到下由深到浅。

但不知何故,tableview 单元格只反映了较暗的背景图像的顶部。

我已经尝试了 stackoverflow 的大量答案,但没有一个有效,也找不到解决这个问题的方法。

它应该是什么样子:

在此处输入图像描述

我的代码看起来像什么:

在此处输入图像描述

- (void)viewDidLoad
{
    [super viewDidLoad];

    [self.tableView setBackgroundView:nil];
    self.tableView.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"menu_background.png"]];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    cell.backgroundColor=[UIColor clearColor];
    cell.backgroundView=[[UIView alloc] initWithFrame:CGRectZero];

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

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

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

//    cell.contentView.backgroundColor = [UIColor clearColor];
//    cell.backgroundColor = [UIColor clearColor];
//    UIView *bgView = [[UIView alloc] init];
//    [[bgView layer] setCornerRadius:10.0f];
//    [bgView setBackgroundColor:[UIColor colorWithWhite:1.0f alpha:0.25f]];
//    cell.backgroundView = bgView;
//    
    return cell;
}

我错过了什么?这是什么解决方案?

谢谢,空间

4

3 回答 3

2

UPDATE事实证明,这将对分组表起到作用:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    cell.backgroundColor = [UIColor clearColor];
    cell.layer.backgroundColor = [UIColor clearColor].CGColor;
}

除了设置单元格的背景颜色之外,您还需要设置单元格的图层背景颜色。

原始如果您可以使用未分组(我在您的模型中没有看到任何需要分组样式的内容),则以下内容应该有效:

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

除了通过将背景分解为图块并将图块放在行中来伪造它之外,我不知道分组的解决方案。平铺方法实际上可以在旧设备上提供更好的滚动性能。

于 2013-07-06T21:58:32.710 回答
1

也许你故意忽略了这个,但你是如何得到你的新单元格的?它是自定义单元格吗?假设它是一个标准单元,我会尝试:

[[cell imageView] setBackgroundColor:[UIColor clearColor]];

我会保留

[cell setBackgroundColor:[UIColor clearColor]];

另一个想法是将它设置为白色并将 alpha 设置为 0,这样最后就很清楚了,但这并不是最好的解决方案。

也许这会奏效?我没有尝试重新创建问题来测试此解决方案。如果它是自定义 UITableViewCell ,那么我只需在 xib 中设置属性。

于 2013-07-08T12:50:57.130 回答
0

你所做的是正确的,但尝试将单元格的背景视图设置为 nil 以使单元格完全透明。如果您使用分组的表格视图和单元格的 UITableViewCell 子类,则通过将背景视图设置为“nil”来使边框消失
cell.backgroundView = nil;

试试这个一次不确定

于 2013-07-08T12:38:33.927 回答