如何更改UITableViewCell的蓝色高亮颜色?

我想知道如何更改UITableViewCell的蓝色高亮/select颜色,任何想法?

您可以通过多种方式更改高亮颜色。

  1. 更改您的单元格的selectionStyle属性。 如果您将其更改为UITableViewCellSelectionStyleGray ,它将是灰色的。

  2. 更改selectedBackgroundView属性。 其实是创造蓝色渐变是一种观点。 您可以创build视图并绘制您喜欢的任何视图,并将视图用作表格视图单元格的背景。

Zonble已经提供了一个很好的答案。 我认为这可能是有用的,包括一个简短的代码片段添加一个UIView到将作为选定的背景视图呈现的tableview单元格。

 cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease]; UIView *selectionColor = [[UIView alloc] init]; selectionColor.backgroundColor = [UIColor colorWithRed:(245/255.0) green:(245/255.0) blue:(245/255.0) alpha:1]; cell.selectedBackgroundView = selectionColor; 
  • 单元格是我的UITableViewCell
  • 我创build了一个UIView,并使用RGB颜色(浅灰色)设置其背景颜色
  • 然后我设置单元格selectedBackgroundView是我用我select的背景颜色创build的UIView

这对我很好。 感谢Zonble的提示。

UITableViewCell有三种默认的select样式:

  1. 蓝色
  2. 灰色
  3. 没有

实施情况如下:

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *) indexPath { [cell setSelectionStyle:UITableViewCellSelectionStyleNone]; } 

如果你想改变它的应用程序范围,你可以添加逻辑到你的应用程序委托

 class AppDelegate: UIResponder, UIApplicationDelegate { //... truncated func application(application: UIApplication!, didFinishLaunchingWithOptions launchOptions: NSDictionary!) -> Bool { // set up your background color view let colorView = UIView() colorView.backgroundColor = UIColor.yellowColor() // use UITableViewCell.appearance() to configure // the default appearance of all UITableViewCells in your app UITableViewCell.appearance().selectedBackgroundView = colorView return true } //... truncated } 

为了完整:如果你创build了你自己的UITableViewCell的子类,你可以实现 – (void)setSelected:(BOOL)selectanimation:(BOOL)animation方法,并设置你添加到内容视图中的一些视图的背景颜色。 (如果是这种情况)或contentView本身(如果它不是由你自己的意见之一。

 - (void)setSelected:(BOOL)selected animated:(BOOL)animated { if(selected) { self.contentView.backgroundColor = UIColor.blueColor; } else { self.contentView.backgroundColor = UIColor.whiteColor; } } 

(没有使用?来适应源代码DIV的小宽度:)

这个方法比使用selectedBackgroundView有两个优点,它使用较less的内存,稍微less一点的CPU,除非你显示数百个单元格,否则你甚至不会注意到它。

我必须将select样式设置为UITableViewCellSelectionStyleDefault自定义背景颜色才能工作。 如果有其他样式,自定义背景颜色将被忽略。 在iOS 8上testing

单元格的完整代码如下所示:

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"MyCell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; } // This is how you change the background color cell.selectionStyle = UITableViewCellSelectionStyleDefault; UIView *bgColorView = [[UIView alloc] init]; bgColorView.backgroundColor = [UIColor redColor]; [cell setSelectedBackgroundView:bgColorView]; return cell; } 

在Swift中,在cellForRowAtIndexPath

 let selectedView = UIView() selectedView.backgroundColor = UIColor.white cell.selectedBackgroundView = selectedView 

如果你想让你的select颜色在每个UITableViewCell相同,在AppDelegate使用。

 let selectedView = UIView() selectedView.backgroundColor = UIColor.white UITableViewCell.appearance().selectedBackgroundView = selectedView 
 @IBDesignable class UIDesignableTableViewCell: UITableViewCell { @IBInspectable var selectedColor: UIColor = UIColor.clearColor() { didSet { selectedBackgroundView = UIView() selectedBackgroundView?.backgroundColor = selectedColor } } } 

在故事板中,将UITableViewCell的类设置为UIDesignableTableViewCell,在“属性”检查器上,可以将所选单元格的颜色更改为任意颜色。

你可以用它来处理所有的单元格。 这就是你的属性检查器的样子。

这就是你的属性检查器的样子