无法更改 UITableView 蓝色突出显示颜色

Posted

技术标签:

【中文标题】无法更改 UITableView 蓝色突出显示颜色【英文标题】:Cannot change UITableView blue highlight color 【发布时间】:2013-08-02 14:46:02 【问题描述】:

我设置:

cell.selectionStyle = UITableViewCellSelectionStyleGray;

并使用代码突出显示一行:

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection: 0];
[self.tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone

即使我设置为灰色,突出显示的颜色也始终为蓝色。如果我设置:

cell.selectionStyle = UITableViewCellSelectionStyleNone;

它工作正常,没有亮点。但只是不适用于:

cell.selectionStyle = UITableViewCellSelectionStyleGray;

它只显示蓝色而不是灰色。任何的想法?谢谢。

【问题讨论】:

请发布包含设置选择颜色和执行选择的完整方法主体的代码。 你不会偶然在 ios 7 中尝试这个,是吗? 【参考方案1】:

实现如下:-

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

     [cell setSelectionStyle:UITableViewCellSelectionStyleGray];       

在自定义表格视图单元格(UITableViewCell 的子类)中将selectedBackgroundView 的颜色设置为您想要的颜色:

UIView * selectedBackgroundView = [[UIView alloc] initWithFrame:self.frame];
[selectedBackgroundView setBackgroundColor:[UIColor redColor]]; // set color here
[self setSelectedBackgroundView:selectedBackgroundView];

或者你可以在-tableView:cellForRowAtIndexPath:方法中配置:

//...
[cell setSelectedBackgroundView:selectedBackgroundView];
//...

【讨论】:

谢谢。有效。我使用自定义单元格。看起来 setSelectionStyle:UITableViewCellSelectionStyleGray 不适用于自定义单元格。 另外,你不需要设置框架,所以设置选择颜色的最短方法是tableView:cellForRowAtIndexPath:中的这两行:cell.selectedBackgroundView = [[UIView alloc] init]; cell.selectedBackgroundView.backgroundColor = [UIColor redColor];(如果你在init中添加一个autorelease没有使用 ARC。)【参考方案2】:

请注意,在 iOS 7 中,使用

[单元格设置SelectionStyle:UITableViewCellSelectionStyleBlue];

不会像预期的那样工作,因为在 iOS 7 中它现在是灰色的,即使你传递了上面的常量。见:

https://developer.apple.com/library/ios/documentation/uikit/reference/UITableViewCell_Class/Reference/Reference.html#//apple_ref/c/tdef/UITableViewCellSelectionStyle

【讨论】:

【参考方案3】:

只需在你的方法中添加它对我的工作

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
 
....
UIView *bgColorView = [[UIView alloc] init];
bgColorView.backgroundColor = [UIColor colorWithRed:(76.0/255.0) green:(161.0/255.0) blue:(255.0/255.0) alpha:1.0]; // perfect color suggested by @mohamadHafez
bgColorView.layer.masksToBounds = YES;
cell.selectedBackgroundView = bgColorView;
....
return cell;

如果您有任何问题,请随时提问

【讨论】:

这是一个很好的答案。如果那是您正在寻找的颜色,它会为您提供正确的蓝色。在我的情况下,当我指定默认蓝色 (UITableViewCellSelectionStyleBlue) 时,背景变为灰色。 Apple 已弃用蓝色样式,但未使用“弃用”一词。 UITableViewCell.SelectionStyle.blue "蓝色 = 选中时单元格具有默认背景颜色"【参考方案4】:

确保在 InterfaceBuilder 或 cellForRowAtIndexPath: 方法中进行此类配置。

【讨论】:

是的。我第一次在 IB 做,但没有工作。然后,我在 cellForRowAtIndexPath 中做了,仍然没有工作。【参考方案5】:

对“UITableViewCellSelectionStyleBlue”进行全局搜索,以确保您没有打错字。

【讨论】:

以上是关于无法更改 UITableView 蓝色突出显示颜色的主要内容,如果未能解决你的问题,请参考以下文章

禁用或更改 Firefox 的元素/图像突出显示颜色

在uitableview中选择时如何更改自定义单元格图像和标签字体颜色?

uitableview 单元格突出显示

选择单元格时,更改 QTableView 中图标的颜色突出显示

如何更改标签栏图标的突出显示颜色? (iPhone/iPad)

UITableView 单元格选择颜色?