Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I prevent custom UITableViewCells from flashing white on deselecting?

I have a custom UITableViewCell which changes color based on which row it is in:

TableViewController.m

- (void)willDisplayCell:(GSRSongCell *)cell atIndexPath:(NSIndexPath *)indexPath;
{
    if (indexPath.row % 2 == 0) {
        [cell lighten];
    } else {
        [cell darken];
    }
}

CustomTableViewCell.m

- (void)lighten
{
    self.selectedBackgroundView.backgroundColor = [UIColor whiteColor];
    self.contentView.backgroundColor = [UIColor whiteColor];
    self.primaryLabel.backgroundColor = [UIColor whiteColor];
    self.secondaryLabel.backgroundColor = [UIColor whiteColor];
}
- (void)darken
{
    UIColor *darkColor = [UIColor colorWithR:241 G:241 B:241 A:1];
    self.selectedBackgroundView.backgroundColor = darkColor;
    self.contentView.backgroundColor = darkColor;
    self.primaryLabel.backgroundColor = darkColor;
    self.secondaryLabel.backgroundColor = darkColor;
}

However, when I call deselectRowAtIndexPath:animated:YES, the animation fades to a white color in cells where the selectedBackgroundColor should be darker.

I then realised that the deselection animation has nothing to do with the selectedBackgroundColor; in fact, the deselection animation is actually based on the tableView.backgroundColor property!

How can I override the deselection animation to fade to the background color of my cells?

like image 965
oliland Avatar asked Jun 04 '12 13:06

oliland


2 Answers

Just set the cell selection to UITableViewCellSelectionStyleNone in the UIBuilder or in code:

cell.selectionStyle = UITableViewCellSelectionStyleNone;
like image 128
George Avatar answered Oct 29 '22 05:10

George


It actually animates back to cell background color so you will have to set it too

Add this line in lighten method

self.backgroundColor = [UIColor whiteColor];

and this in darken method

self.backgroundColor = darkColor;
like image 20
Yogesh Maheshwari Avatar answered Oct 29 '22 04:10

Yogesh Maheshwari