如何更改UITableViewCell的蓝色高亮颜色?
我想知道如何更改UITableViewCell
的蓝色高亮/select颜色,任何想法?
您可以通过多种方式更改高亮颜色。
-
更改您的单元格的selectionStyle属性。 如果您将其更改为
UITableViewCellSelectionStyleGray
,它将是灰色的。 -
更改
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样式:
- 蓝色
- 灰色
- 没有
实施情况如下:
- (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,在“属性”检查器上,可以将所选单元格的颜色更改为任意颜色。
你可以用它来处理所有的单元格。 这就是你的属性检查器的样子。