Answers:
您可以通过多种方式更改突出显示颜色。
更改单元格的selectionStyle属性。如果将其更改为UITableViewCellSelectionStyleGray
,它将为灰色。
更改selectedBackgroundView
属性。实际上,创建蓝色渐变的是一个视图。您可以创建视图并绘制所需的内容,并将该视图用作表格视图单元格的背景。
selectedBackgroundView
那样就不会显示出来。仅在将“选择”设置为“默认”后,才会selectedBackgroundView
显示。经测试在iOS 6和7
cell.selectedBackgroundView = [UIView new];
并设置所需的任何颜色:cell.selectedBackgroundView.backgroundColor = [UIColor colorWithHex:@"ecf2f5" andAlpha:1];
Zonble已经提供了一个很好的答案。我认为,包括一个简短的代码段以将a添加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
selectedBackgroundView
是UIView
我创造了我的选择背景颜色这对我来说很好。感谢您的提示Zonble。
UITableViewCell
具有三种默认选择样式:-
实现如下:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *) indexPath {
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
}
在Swift中,在 cellForRowAtIndexPath
let selectedView = UIView()
selectedView.backgroundColor = .white
cell.selectedBackgroundView = selectedView
如果希望每种选择颜色都相同,请在中UITableViewCell
使用AppDelegate
。
let selectedView = UIView()
selectedView.backgroundColor = .white
UITableViewCell.appearance().selectedBackgroundView = selectedView
如果要在整个应用范围内更改它,可以将逻辑添加到“应用程序代表”中
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
}
出于完整性考虑:如果您创建了自己的子类,则UITableViewCell
可以实现该- (void)setSelected:(BOOL)selected animated:(BOOL)animated
方法,并设置在内容视图中添加的某些视图的背景色。(如果是这种情况)或contentView本身(如果您自己的视图之一未包含它)。
- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
if(selected) {
self.contentView.backgroundColor = UIColor.blueColor;
} else {
self.contentView.backgroundColor = UIColor.whiteColor;
}
}
(不是使用?来适应源代码DIV的小宽度:)
与使用selectedBackgroundView相比,此方法有两个优点,它使用较少的内存,而CPU则略少,除非您显示数百个单元格,否则您甚至不会注意到。
selectedBackgroundView
方法之后,此方法才有效。在方法的开头添加self. selectedBackgroundView = [UIView new];
selectedBackgroundView
属性。
我必须将选择样式设置为才能UITableViewCellSelectionStyleDefault
使用自定义背景色。如果有其他样式,则自定义背景色将被忽略。在iOS 8上测试。
单元的完整代码如下:
- (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;
}
根据@user的回答,您可以将此扩展名添加到应用程序代码中的任何位置,并直接在故事板编辑器中为应用程序的每个单元格选择颜色:
@IBDesignable extension UITableViewCell {
@IBInspectable var selectedColor: UIColor? {
set {
if let color = newValue {
selectedBackgroundView = UIView()
selectedBackgroundView!.backgroundColor = color
} else {
selectedBackgroundView = nil
}
}
get {
return selectedBackgroundView?.backgroundColor
}
}
}
@IBDesignable class UIDesignableTableViewCell: UITableViewCell {
@IBInspectable var selectedColor: UIColor = UIColor.clearColor() {
didSet {
selectedBackgroundView = UIView()
selectedBackgroundView?.backgroundColor = selectedColor
}
}
}
在情节提要中,将UITableViewCell的类设置为UIDesignableTableViewCell,在“属性”检查器上,可以将单元格的选定颜色更改为任何颜色。
您可以将其用于所有单元格。这就是属性检查器的外观。
UIColor.clear
,不是UIColor.clearColor()
。不知道这是否也是Swift的变化,但是如果没有也可以使用@IBDesignable
。