分组 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?的主要内容,如果未能解决你的问题,请参考以下文章