UITableView单元格选择颜色?


319

我创建了一个自定义UITableViewCell。表格视图显示的数据很好。我遇到的问题是,当用户触摸表格视图的单元格时,我想显示该单元格的背景色,而不是默认的[蓝色]值,以突出显示该单元格的选择。我使用此代码,但没有任何反应:

cell.selectedBackgroundView.backgroundColor=[UIColor blackColor];

Answers:


365

我认为您走在正确的道路上,但是根据以下课程的类定义selectedBackgroundView

对于普通样式表(UITableViewStylePlain)中的单元,默认值为nil;对于节组表UITableViewStyleGrouped,默认值为nil。

因此,如果您使用的是普通样式表,则需要UIView分配一个具有所需背景色的新值,然后将其分配给selectedBackgroundView

或者,您可以使用:

cell.selectionStyle = UITableViewCellSelectionStyleGray;

如果选中该单元格时您想要的只是一个灰色背景。希望这可以帮助。


1
如果您希望将与视图相关的内容留在视图中,则也可以在情节提要中设置此属性。
IIllIIll

1
斯威夫特3版本:cell.selectionStyle = .gray //你也可以使用.none,或的.blue .DEFAULT
塞巴斯蒂安REMY

6
这个答案很老...在新的iOS版本中是否进行了某些更改?我有一个普通样式的表,并且我的selectedBackgroundView不是nil。有趣的是,在此视图上更改backgroundColor并没有任何效果,相反,我必须使用具有所需backgroundColor的新UIView替换它,以使其起作用。
ndreisg

你只是让我免于完全发疯。非常感谢!
mrwheet19年

656

无需自定义单元格。如果只想更改单元格的选定颜色,则可以执行以下操作:

目标C:

UIView *bgColorView = [[UIView alloc] init];
bgColorView.backgroundColor = [UIColor redColor];
[cell setSelectedBackgroundView:bgColorView];

迅速:

let bgColorView = UIView()
bgColorView.backgroundColor = UIColor.red
cell.selectedBackgroundView = bgColorView

47
这可行,但是在分组的UITableView中,圆角丢失了。
David

1
@David cornerRadius = 7在分组表视图中的任何地方都可以工作吗?如果细胞在中间怎么办?没有时间测试。
Maciej Swic

2
因为迅速是个小错误。正确的行是cell.selectedBackgroundView = bgColorView
John Kakon 2014年

13
请注意,要使其正常工作,必须在情节提要(或XIB文件)中选择“无”以外的“选定背景”颜色。这与某些答案相反,后者说您首先需要将其设置为None才能起作用。如果没有,它将无法正常工作。一直让我发疯,直到我弄清楚了。谢谢。
kakubei 2014年

1
当您还使用情节提要时,如何进行这项工作?
约翰

42

可以通过Interface Builder中的Storyboard设置Table View单元格选择背景色:

表格视图单元格选择颜色无


1
我认为我们无法从情节提要中设置自定义颜色。需要以编程方式进行设置。
pallavi

37

如果您有一个分组的表,每个节只有一个单元格,只需在代码中添加以下额外的行即可: bgColorView.layer.cornerRadius = 10;

UIView *bgColorView = [[UIView alloc] init];
[bgColorView setBackgroundColor:[UIColor redColor]];
bgColorView.layer.cornerRadius = 10;
[cell setSelectedBackgroundView:bgColorView];
[bgColorView release]; 

不要忘记导入QuartzCore。


28

斯威夫特3:对我来说,将其放入cellForRowAtIndexPath:方法中就可以了

let view = UIView()
view.backgroundColor = UIColor.red
cell.selectedBackgroundView = view

6
我认为最好的放置awakeFromNib()方法是方法(在自定义单元格的情况下)。
LembergSun'1

22

以下内容适用于iOS 8。

我必须将选择样式设置为 UITableViewCellSelectionStyleDefault使用自定义背景色。如果有其他样式,则自定义背景色将被忽略。行为似乎有所变化,因为以前的答案需要将样式设置为无。

单元的完整代码如下:

- (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;
}

此代码正在泄漏内存。任何“分配”或对象创建都必须在if(cell == nil){}块中。否则,每次iOS释放单元时都会创建视图。
GeneCode

18

为表格单元格创建一个自定义单元格,然后在自定义单元格类中。将代码放在下面,即可正常工作。您需要在selectionBackgroundUIImage中放置所需的彩色图像。

- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
    UIImage *selectionBackground = [UIImage imageNamed:@"yellow_bar.png"];
    UIImageView *iview=[[UIImageView alloc] initWithImage:selectionBackground];
    self.selectedBackgroundView=iview;
}

2
我认为这比通过仅在选择一个单元格时创建bg视图来初始化单元格时设置set selectedBackgroundView更为有效。
dotlashlashlu 2013年

11

Swift 3.0扩展

extension UITableViewCell {
    var selectionColor: UIColor {
        set {
            let view = UIView()
            view.backgroundColor = newValue
            self.selectedBackgroundView = view
        }
        get {
            return self.selectedBackgroundView?.backgroundColor ?? UIColor.clear
        }
    }
}

cell.selectionColor = UIColor.FormaCar.blue


1
添加IBDesignable和IBInspectable
米哈尔Ziobro

1
@IBInspectable如果需要,@MichałZiobro只需添加变量即可。@IBDesignable对此没有用。
Nik Kov

9
-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    UIView *view = [[UIView alloc] init];
    [view setBackgroundColor:[UIColor redColor]];
    [cell setSelectedBackgroundView:view];
}

我们需要使用此方法设置选定的背景视图。


8

如果要向单元格添加自定义突出显示的颜色(并且单元格包含按钮,标签,图像等),请按照以下步骤操作:

例如,如果要选择黄色:

1)创建一个适合所有具有20%不透明度(黄色)的单元格的视图,例如backgroundselectedView

2)在单元控制器中输入以下内容:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
     self.backgroundselectedView.alpha=1;
    [super touchesBegan:touches withEvent:event];
}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    self.backgroundselectedView.alpha=0;
    [super touchesEnded:touches withEvent:event];
}

- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event
{
    self.backgroundSelectedImage.alpha=0;
    [super touchesCancelled:touches withEvent:event];
}

8

在Swift 4中,您还可以全局设置表格单元的背景色(从此处获取):

let backgroundColorView = UIView()
backgroundColorView.backgroundColor = UIColor.red
UITableViewCell.appearance().selectedBackgroundView = backgroundColorView

6

如果使用自定义TableViewCell,则还可以重写awakeFromNib

override func awakeFromNib() {
    super.awakeFromNib()

    // Set background color
    let view = UIView()
    view.backgroundColor = UIColor.redColor()
    selectedBackgroundView = view
}

1
不错的解决方案!谢谢
托马斯·卡尔蒙

我有一个不超过10个单元格的简单表格视图,到目前为止效果很好。
code4latte

5

克里斯蒂安(Christian)为分组表显示圆角背景的方法的另一个提示。

如果cornerRadius = 10用于单元格,它将显示四个角的圆形选择背景。与表格视图的默认UI不同。

所以,我想到了用CornerRadius解决的简单方法。从下面的代码中可以看到,检查单元的位置(顶部,底部,中间或顶部底部),然后再添加一个子层以隐藏顶部角或底部角。这仅显示与默认表视图的选择背景完全相同的外观。

我用iPad测试了此代码splitterview。您可以根据需要更改patchLayer的框架位置。

请让我知道是否有更简单的方法来达到相同的结果。

if (tableView.style == UITableViewStyleGrouped) 
{
    if (indexPath.row == 0) 
    {
        cellPosition = CellGroupPositionAtTop;
    }    
    else 
    {
        cellPosition = CellGroupPositionAtMiddle;
    }

    NSInteger numberOfRows = [tableView numberOfRowsInSection:indexPath.section];
    if (indexPath.row == numberOfRows - 1) 
    {
        if (cellPosition == CellGroupPositionAtTop) 
        {
            cellPosition = CellGroupPositionAtTopAndBottom;
        } 
        else 
        {
            cellPosition = CellGroupPositionAtBottom;
        }
    }

    if (cellPosition != CellGroupPositionAtMiddle) 
    {
        bgColorView.layer.cornerRadius = 10;
        CALayer *patchLayer;
        if (cellPosition == CellGroupPositionAtTop) 
        {
            patchLayer = [CALayer layer];
            patchLayer.frame = CGRectMake(0, 10, 302, 35);
            patchLayer.backgroundColor = YOUR_BACKGROUND_COLOR;
            [bgColorView.layer addSublayer:patchLayer];
        } 
        else if (cellPosition == CellGroupPositionAtBottom) 
        {
            patchLayer = [CALayer layer];
            patchLayer.frame = CGRectMake(0, 0, 302, 35);
            patchLayer.backgroundColor = YOUR_BACKGROUND_COLOR;
            [bgColorView.layer addSublayer:patchLayer];
        }
    }
}

4

我想指出,XIB编辑器为您提供以下标准选项:

部分:蓝色/灰色/无

(带有选项的右侧列,第4个选项卡,第一组“表视图单元格”,第4个子组,第3个项目中的第一个显示为“选择”)

通过选择正确的标准选项,可能可以实现您想要的操作。


你是对的。因此,如果您这样做,则可以通过添加以下内容来简单地更改“ cellForRowAtIndexPath”中的选择颜色:UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@“ Cell”]; cell.selectedBackgroundView = [[UIView分配] initWithFrame:CGRectZero]; cell.selectedBackgroundView.backgroundColor = [UIColor colorWithRed:(255/255)绿色:(0/255)蓝色:(0/255)alpha:0.1];
user8675 2015年

谢谢!要走的路
Fattie

3

根据UITableViewMac中的选定单元格的自定义颜色,Maciej Swic的答案是一个很好的解决方案

补充说明一下,您通常在以下单元格配置中声明Swic的答案

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

为了增加效果,可以使用RGB值代替自定义颜色,而不是使用系统颜色。在我的代码中,这就是我的实现方式:

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

} 

 static NSString *CellIdentifier = @"YourCustomCellName";
 MakanTableCell *cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

// Configure the cell...

if (cell == nil) {

cell = [[[NSBundle mainBundle]loadNibNamed:@"YourCustomCellClassName" owner:self options:nil]objectAtIndex:0];
                    } 

UIView *bgColorView = [[UIView alloc] init];
bgColorView.backgroundColor = [UIColor colorWithRed:255.0/256.0 green:239.0/256.0 blue:49.0/256.0 alpha:1];
bgColorView.layer.cornerRadius = 7;
bgColorView.layer.masksToBounds = YES;
[cell setSelectedBackgroundView:bgColorView];


return cell;

}

让我知道这是否也适合您。您可以cornerRadius将所选单元格角上的效果数字弄乱。


3

与其他所有人相比,我有一个略有不同的方法,它反映了触摸时的选择而不是被选中后的选择。我有一个子类的UITableViewCell。您要做的就是在触摸事件中设置背景颜色,该颜色可模拟触摸时的选择,然后在setSelected函数中设置背景颜色。在selSelected函数中设置背景色可以取消选择单元格。确保将触摸事件传递给超级事件,否则该单元格实际上不会像其选定的那样起作用。

override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
    self.backgroundColor = UIColor(white: 0.0, alpha: 0.1)
    super.touchesBegan(touches, withEvent: event)
}

override func touchesCancelled(touches: NSSet!, withEvent event: UIEvent!) {
    self.backgroundColor = UIColor.clearColor()
    super.touchesCancelled(touches, withEvent: event)
}

override func setSelected(selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: animated)

    // Configure the view for the selected state
    self.backgroundColor = selected ? UIColor(white: 0.0, alpha: 0.1) : UIColor.clearColor()
}

3

要为所有单元格添加背景(使用Maciej的答案):

for (int section = 0; section < [self.tableView numberOfSections]; section++) {
        for (int row = 0; row < [self.tableView numberOfRowsInSection:section]; row++) {
            NSIndexPath* cellPath = [NSIndexPath indexPathForRow:row inSection:section];
            UITableViewCell* cell = [self.tableView cellForRowAtIndexPath:cellPath];

            //stuff to do with each cell
            UIView *bgColorView = [[UIView alloc] init];
            bgColorView.backgroundColor = [UIColor redColor];
            [cell setSelectedBackgroundView:bgColorView];
        }
    } 

2

覆盖UITableViewCellsetSelected也可以。

override func setSelected(selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: animated)

    // Set background color
    let view = UIView()
    view.backgroundColor = UIColor.redColor()
    selectedBackgroundView = view
}

2

对于那些只想摆脱默认选定的灰色背景的用户,请将以下代码行放入cellForRowAtIndexPath函数中:

yourCell.selectionStyle = .None

1
非常感谢,这是我的正确答案,而不是其他人。
DeyaEldeen

如何设置“绿色”之类的颜色,而不是不设置任何颜色或设置蓝色或灰色。
萨蒂扬

2

对于Swift 3.0:

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    let cell = super.tableView(tableView, cellForRowAt: indexPath)

    cell.contentView.backgroundColor = UIColor.red
}

不错,但是只有在用户选择了某些东西之后才能起作用(默认选择颜色将保留在开始位置)
Konstantin Salavatov '17

2

我使用以下方法,对我来说效果很好,

class MyTableViewCell : UITableViewCell {

                var defaultStateColor:UIColor?
                var hitStateColor:UIColor?

                 override func awakeFromNib(){
                     super.awakeFromNib()
                     self.selectionStyle = .None
                 }

// if you are overriding init you should set selectionStyle = .None

                override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
                    if let hitColor = hitStateColor {
                        self.contentView.backgroundColor = hitColor
                    }
                }

                override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) {
                    if let defaultColor = defaultStateColor {
                        self.contentView.backgroundColor = defaultColor
                    }
                }

                override func touchesCancelled(touches: Set<UITouch>?, withEvent event: UIEvent?) {
                    if let defaultColor = defaultStateColor {
                        self.contentView.backgroundColor = defaultColor
                    }
                }
            }

2

迅捷4+:

表格单元格中添加以下行

let bgColorView = UIView()
bgColorView.backgroundColor =  .red
self.selectedBackgroundView = bgColorView

最后应该如下

override func setSelected(_ selected: Bool, animated: Bool)
    {
        super.setSelected(selected, animated: animated)

        // Configure the view for the selected state
        let bgColorView = UIView()
        bgColorView.backgroundColor =  .red
        self.selectedBackgroundView = bgColorView

    }

1

这是分组表所需的代码的重要部分。选择一个节中的任何单元格后,第一行将更改颜色。最初没有将cellslectionstyle设置为none的情况下,当用户单击row0时,会出现令人讨厌的两次重新加载,在该行上,单元格更改为bgColorView,然后淡出并再次重新加载bgColorView。祝您好运,如果有更简单的方法,请告诉我。

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

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    if ([indexPath row] == 0) 
    {
        cell.selectionStyle = UITableViewCellSelectionStyleNone;

        UIView *bgColorView = [[UIView alloc] init];
        bgColorView.layer.cornerRadius = 7;
        bgColorView.layer.masksToBounds = YES;
        [bgColorView setBackgroundColor:[UIColor colorWithRed:.85 green:0 blue:0 alpha:1]];
        [cell setSelectedBackgroundView:bgColorView];

        UIColor *backColor = [UIColor colorWithRed:0 green:0 blue:1 alpha:1];
        cell.backgroundColor = backColor;
        UIColor *foreColor = [UIColor colorWithWhite:1 alpha:1];
        cell.textLabel.textColor = foreColor;

        cell.textLabel.text = @"row0";
    }
    else if ([indexPath row] == 1) 
    {
        cell.selectionStyle = UITableViewCellSelectionStyleNone;

        UIColor *backColor = [UIColor colorWithRed:1 green:1 blue:1 alpha:1];
        cell.backgroundColor = backColor;
        UIColor *foreColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:1];
        cell.textLabel.textColor = foreColor;

        cell.textLabel.text = @"row1";
    }
    else if ([indexPath row] == 2) 
    {
        cell.selectionStyle = UITableViewCellSelectionStyleNone;

        UIColor *backColor = [UIColor colorWithRed:1 green:1 blue:1 alpha:1];
        cell.backgroundColor = backColor;
        UIColor *foreColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:1];
        cell.textLabel.textColor = foreColor;

        cell.textLabel.text = @"row2";
    }
    return cell;
}

#pragma mark Table view delegate

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSIndexPath *path = [NSIndexPath indexPathForRow:0 inSection:[indexPath section]];
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:path];
    [cell setSelectionStyle:UITableViewCellSelectionStyleBlue];

    [tableView selectRowAtIndexPath:path animated:YES scrollPosition:UITableViewScrollPositionNone];

}

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

#pragma mark Table view Gestures

-(IBAction)singleTapFrom:(UIGestureRecognizer *)tapRecog
{

    CGPoint tapLoc = [tapRecog locationInView:tvStat];
    NSIndexPath *tapPath = [tvStat indexPathForRowAtPoint:tapLoc];

    NSIndexPath *seleRow = [tvStat indexPathForSelectedRow];
    if([seleRow section] != [tapPath section])
        [self tableView:tvStat didDeselectRowAtIndexPath:seleRow];
    else if (seleRow == nil )
        {}
    else if([seleRow section] == [tapPath section] || [seleRow length] != 0)
        return;

    if(!tapPath)
        [self.view endEditing:YES];

    [self tableView:tvStat didSelectRowAtIndexPath:tapPath];
}

1

如果是自定义单元格类。只需覆盖:

- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
    [super setSelected:selected animated:animated];

    // Configure the view for the selected state

    if (selected) {
        [self setBackgroundColor: CELL_SELECTED_BG_COLOR];
        [self.contentView setBackgroundColor: CELL_SELECTED_BG_COLOR];
    }else{
        [self setBackgroundColor: [UIColor clearColor]];
        [self.contentView setBackgroundColor: [UIColor clearColor]];
    }
}

0

表格视图样式简单时很容易,但是在组样式下比较麻烦,我可以通过以下方法解决:

CGFloat cellHeight = [self tableView:tableView heightForRowAtIndexPath:indexPath];
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, kGroupTableViewCellWidth+2, cellHeight)];
view.backgroundColor = kCommonHighlightedColor;
cell.selectedBackgroundView = view;
[view release];
UIRectCorner cornerFlag = 0;
CGSize radii = CGSizeMake(0, 0);
NSInteger theLastRow = --> (yourDataSourceArray.count - 1);
if (indexPath.row == 0) {
    cornerFlag = UIRectCornerTopLeft | UIRectCornerTopRight;
    radii = CGSizeMake(10, 10);
} else if (indexPath.row == theLastRow) {
    cornerFlag = UIRectCornerBottomLeft | UIRectCornerBottomRight;
    radii = CGSizeMake(10, 10);
}
UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:view.bounds byRoundingCorners:cornerFlag cornerRadii:radii];
CAShapeLayer *shapeLayer = [CAShapeLayer layer];
shapeLayer.path = maskPath.CGPath;
view.layer.mask = shapeLayer;

注意kGroupTableViewCellWidth,我将其定义为300,它是iPhone中组表视图单元格宽度的宽度


0
[cell setSelectionStyle:UITableViewCellSelectionStyleGray];

确保您已使用以上行来使用选择效果


0
override func setSelected(selected: Bool, animated: Bool) {
    // Configure the view for the selected state

    super.setSelected(selected, animated: animated)
    let selView = UIView()

    selView.backgroundColor = UIColor( red: 5/255, green: 159/255, blue:223/255, alpha: 1.0 )
    self.selectedBackgroundView = selView
}

请为您的答案添加一些解释,以使所有以后的读者都可以
读懂

0

我正在使用iOS 9.3并通过情节提要设置颜色或设置cell.selectionStyle对我不起作用,但是以下代码有效:

UIView *customColorView = [[UIView alloc] init];
customColorView.backgroundColor = [UIColor colorWithRed:55 / 255.0 
                                                  green:141 / 255.0 
                                                   blue:211 / 255.0 
                                                  alpha:1.0];
cell.selectedBackgroundView = customColorView;

return cell;

我在这里找到了这个解决方案。


0

尝试以下代码。

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

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:[cellIdArray objectAtIndex:indexPath.row] forIndexPath:indexPath];

    // Configure the cell...
    cell.backgroundView =
    [[UIImageView alloc] init] ;
    cell.selectedBackgroundView =[[UIImageView alloc] init];

    UIImage *rowBackground;
    UIImage *selectionBackground;


    rowBackground = [UIImage imageNamed:@"cellBackgroundDarkGrey.png"];
    selectionBackground = [UIImage imageNamed:@"selectedMenu.png"];

    ((UIImageView *)cell.backgroundView).image = rowBackground;
    ((UIImageView *)cell.selectedBackgroundView).image = selectionBackground;



    return cell;
}

//快速版本:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {


        let cell = tableView.dequeueReusableCell(withIdentifier: "cell")! as UITableViewCell


        cell.selectedBackgroundView = UIImageView()
        cell.backgroundView=UIImageView()

        let selectedBackground : UIImageView = cell.selectedBackgroundView as! UIImageView
        selectedBackground.image = UIImage.init(named:"selected.png");

        let backGround : UIImageView = cell.backgroundView as! UIImageView
        backGround.image = UIImage.init(named:"defaultimage.png");

        return cell


    } 

0

斯威夫特4.x

要将选择背景颜色更改为anyColour,请使用Swift 扩展

创建如下的UITableView Cell扩展

extension UITableViewCell{

    func removeCellSelectionColour(){
        let clearView = UIView()
        clearView.backgroundColor = UIColor.clear
        UITableViewCell.appearance().selectedBackgroundView = clearView
    } 

}

然后使用单元实例调用removeCellSelectionColour()

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.