分组 UITableView 的半透明 UITableViewCell?

Posted

技术标签:

【中文标题】分组 UITableView 的半透明 UITableViewCell?【英文标题】:Translucent UITableViewCell for grouped UITableView? 【发布时间】:2011-09-29 18:18:46 【问题描述】:

我想创建一个 TRANSLUCENT 分组表视图单元格。换句话说,我想看到分组的表格视图背景模式,但我不想完全清除单元格。我见过很多关于透明单元格的问题,但没有一个涉及制作半透明(仅部分透明)的单元格。

这就是我正在尝试的:

- (void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath 
    cell.contentView.backgroundColor = [UIColor colorWithWhite:1.0f alpha:0.5f];
    cell.backgroundColor = [UIColor clearColor];
    cell.backgroundView.backgroundColor = [UIColor clearColor];

结果如下:

几乎是对的,只是单元格的 contentView 超出了分组单元格的圆角。

已解决,方法是使用透明图像并设置单元格的背景视图。不过,我仍然希望以编程方式进行,所以如果有人有解决方案,我会很乐意接受。

已解决第二部分 也可以通过将 backgroundView 设置为新的 UIView 来完成,该 UIView 通过 QuartzCore 的 setCornerRadius 调用视图的 layer 属性具有所需的背景颜色和圆角。

【问题讨论】:

backgroundView 属性采用 UIView,因此无需使用图像。只需使用您想要的颜色创建一个视图,并将其 alpha 设置为适合您的透明度。 这与我最初尝试的基本相同(将 backgroundView 分配给新的 UIView 或直接为其分配颜色没有区别)。没有圆角。 但是,我想到它可以通过 QuartzCore setCornerRadius 调用来实现 :) 刚刚看到另一个与此相关的问题...您能否通过简单地删除 backgroundView 来解决第三部分? 【参考方案1】:

这应该就是你所需要的:

cell.contentView.backgroundColor = [UIColor clearColor];
cell.backgroundColor = [UIColor colorWithWhite:1.0 alpha:0.5];

【讨论】:

这是正确的解决方案。此外,您应该将 textLabel backgroundColor 设置为 clearColor:cell.textLabel.backgroundColor = [UIColor clearColor];【参考方案2】:

对于其他想知道的人,我最终使用的代码是:

- (UITableViewCell*) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

    //...  

    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;

【讨论】:

这仅适用于部分中有一个单元格的情况。否则看起来很古怪。 这对我来说非常有效,除了在 -tableView:heightForRowAtIndexPath 中添加了额外的高度:以前版本的代码一直使用每个数据项的一个部分,只是为了利用部分之间的内置透明度!

以上是关于分组 UITableView 的半透明 UITableViewCell?的主要内容,如果未能解决你的问题,请参考以下文章

iOS 7中UITableView的半透明效果[关闭]

tableView 作为半透明视图中的子视图

如何使 UITableView 成为透明的?

为啥 javafx 会破坏我的半透明游标?

PyGame:具有每像素 alpha 的半透明精灵

IOS - 内容上的半透明导航栏