どの行にあるかに基づいて色が変わるカスタム 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
プロパティに基づいています。
セルの背景色にフェードするように選択解除アニメーションをオーバーライドするにはどうすればよいですか?