10

我有一个自定义 UITableViewCell 它根据它所在的行更改颜色:

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

但是,当我调用 时,动画在应该更暗deselectRowAtIndexPath:animated:YES的单元格中淡出为白色。selectedBackgroundColor

selectedBackgroundColor然后我意识到取消选择动画与;无关 实际上,取消选择动画实际上是基于tableView.backgroundColor属性的!

如何覆盖取消选择动画以淡化为单元格的背景颜色?

4

2 回答 2

9

它实际上会动画回单元格背景颜色,因此您也必须设置它

在 lighten 方法中添加这一行

self.backgroundColor = [UIColor whiteColor];

这在变暗方法

self.backgroundColor = darkColor;
于 2012-06-04T14:11:07.293 回答
5

只需在 UIBuilder 或代码中将单元格选择设置为 UITableViewCellSelectionStyleNone :

cell.selectionStyle = UITableViewCellSelectionStyleNone;
于 2015-01-26T17:32:07.077 回答