iOS:为 UITableViewCell 设置选定突出显示颜色的 alpha

Posted

技术标签:

【中文标题】iOS:为 UITableViewCell 设置选定突出显示颜色的 alpha【英文标题】:iOS: Set alpha of selected highlight color for UITableViewCell 【发布时间】:2015-09-10 15:19:43 【问题描述】:

我已经设置了选择单元格的突出显示颜色,它非常简单。但是,当我设置 UIView 的 alpha 时,它没有响应。我尝试在视图中放置标签并设置 alpha,但它也不起作用。有谁知道为什么会这样?

这是我用来设置高亮颜色的代码:

[cell setSelectionStyle:UITableViewCellSelectionStyleDefault];

UIView *highlightView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, cell.frame.size.width, cell.frame.size.height)];
highlightView.backgroundColor = [UIColor clearColor];
UILabel *backLabel = [[UILabel alloc] initWithFrame:highlightView.frame];
backLabel.backgroundColor = [UIColor blueColor];
backLabel.alpha = 0.5f;
[highlightView addSubview:backLabel];
cell.selectedBackgroundView = highlightView;

我真正想要的只是让高亮颜色具有透明效果。将它设置为像蓝色或红色这样的纯色对我的背景图像来说非常强烈。感谢您的任何建议和帮助!

【问题讨论】:

你为什么要给它加一个uiview?您可以改为访问单元格内容视图 【参考方案1】:

这最终成为了解决方案:

UIView *highlightView = [[UIView alloc] init];
highlightView.backgroundColor = [UIColor colorWithRed:0 green:0 blue:1.0 alpha:.5];
cell.selectedBackgroundView = highlightView;

这仅在我不包括时才有效:

cell.selectionStyle = UITableViewCellSelectionStyleDefault;

cell.selectionStyle = UITableViewCellSelectionStyleNone;

这很奇怪,因为我读过的所有内容都完全符合@Michal 在他的回答中指出的内容。

【讨论】:

【参考方案2】:

别忘了先设置样式! (从 ios 8 开始):

cell.selectionStyle = UITableViewCellSelectionStyleDefault;

在 iOS 8 之前,这是要走的路:

cell.selectionStyle = UITableViewCellSelectionStyleNone;

【讨论】:

我更新了我的问题,我把它注释掉了,因为当我使用它而不是蓝色时,没有颜色。我正在 iOS 7.1.1 设备和 iOS 8.4 设备上测试 哦,但问题是,您正试图拥有“过于复杂”的选择视图。您不会为selectedBackgroundView 设置rect,它会为您设置并扩展它。这就是为什么你认为没有任何事情发生。它会忽略您正在设置的框架和子视图... 如果你做[[UIView alloc] init],然后设置它的背景颜色为红色,然后将此视图设置为背景视图,它将全部为红色-它会自动设置框架。 我摆脱了 UILabel 并用 init 替换了 initWithFrame 并尝试将 UIView 的 alpha 设置为 .5,但我仍然得到相同的结果 - 没有突出显示。 该链接帮助我找到了解决方案。显然,设置子视图的 alpha 存在一个已知问题,奇怪的是我不得不删除 selectionStyle 代码才能开始工作。

以上是关于iOS:为 UITableViewCell 设置选定突出显示颜色的 alpha的主要内容,如果未能解决你的问题,请参考以下文章

iOS UITableViewCell 配件在左侧?

以编程方式为 UITableViewCell 设置 LayoutMargins - iOS 7 替代方案

iOS:为 UITableViewCell 设置选定突出显示颜色的 alpha

iOS7 上的 TableViewCell 中不会显示复选标记

iOS9 UITableViewCell separatorInset设置为0分割线还是没有顶到头的问题

iOS Swift:删除行后 UITableViewCell 编辑设置为真