如何防止自定义 UITableViewCells 在取消选择时闪烁白色?
Posted
技术标签:
【中文标题】如何防止自定义 UITableViewCells 在取消选择时闪烁白色?【英文标题】:How do I prevent custom UITableViewCells from flashing white on deselecting? 【发布时间】:2012-06-04 13:44:35 【问题描述】:我有一个自定义 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
属性的!
如何覆盖取消选择动画以淡化为单元格的背景颜色?
【问题讨论】:
我也尝试将 tableView.backgroundColor 设置为 [UIColor clearColor] - 这没有效果。 【参考方案1】:它实际上是动画回到单元格背景颜色,所以你也必须设置它
在lighten方法中加入这一行
self.backgroundColor = [UIColor whiteColor];
还有这个变暗的方法
self.backgroundColor = darkColor;
【讨论】:
不敢相信我没有尝试过。谢谢!【参考方案2】:只需在 UIBuilder 或代码中将单元格选择设置为 UITableViewCellSelectionStyleNone:
cell.selectionStyle = UITableViewCellSelectionStyleNone;
【讨论】:
对于 Swift 中的我来说,我有 'cell.selectionStyle = UITableViewCellSelectionStyle.None'以上是关于如何防止自定义 UITableViewCells 在取消选择时闪烁白色?的主要内容,如果未能解决你的问题,请参考以下文章
一个NIB中的几个自定义UITableViewCells - 如何在代码中引用?
如何使用 begin-endUpdates() 和多个自定义单元格展开/折叠 UITableViewCells?
使用插入动画时,如何防止我的 UITableViewCells 内容与其他单元格重叠?