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 に答える