具有错误背景颜色的自定义 UITableViewCell
Posted
技术标签:
【中文标题】具有错误背景颜色的自定义 UITableViewCell【英文标题】:Custom UITableViewCell with wrong backgroundColor 【发布时间】:2013-09-19 13:15:34 【问题描述】:我有一个基于 Storyboard Prototype 单元的自定义 UITableViewCell
。在我的自定义单元格类中,我根据单元格状态“选定”或“突出显示”为单元格着色,代码如下所示:
- (void)updateCellDisplay
if (self.selected || self.highlighted)
self.label.textColor = [UIColor whiteColor];
self.backgroundColor = [UIColor myLightBlueColor];
else
self.label.textColor = [UIColor blackColor];
self.backgroundColor = [UIColor whiteColor];
- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated
[super setHighlighted:highlighted animated:animated];
[self updateCellDisplay];
- (void)setSelected:(BOOL)selected animated:(BOOL)animated
[super setSelected:selected animated:animated];
[self updateCellDisplay];
现在我在 ios7 中出现了这种奇怪的行为,即在选择结束后,单元格将自身重新绘制成完全蓝色。标签不再可见。看起来该单元格具有覆盖所有内容的前景色。这适用于 iOS7 之前的所有 iOS 版本。
那会是什么?
【问题讨论】:
我发现它与自定义UITableViewCell的selectedBackgroundView有关。您看到的蓝色是这样应用的 selectedBackgroundViewUIView *selectedBackgroundView = [[UIView alloc] initWithFrame:drawerCell.frame]; selectedBackgroundView.backgroundColor = [UIColor customLightBlueColor]; drawerCell.selectedBackgroundView = selectedBackgroundView;
它涵盖了 UITableViewCell 的内容视图内的所有其他视图。这只发生在 iOS7 上。我认为这是一个错误。有人知道解决这个问题的方法吗?
【参考方案1】:
似乎单元格的 contentView 在内容之上。我有一个类似的问题,并通过在 cellForRowAtIndexPath 的 contentView 中添加我的自定义项目来解决它。
在我的情况下,项目没有收到触摸,因为 contentView 已经结束。
[[cell contentView] addSubview:cell.itemTitleView]
希望对你有帮助。
【讨论】:
以上是关于具有错误背景颜色的自定义 UITableViewCell的主要内容,如果未能解决你的问题,请参考以下文章
具有背景和项目的自定义 UIActivityViewController
导航条的自定义:背景颜色设置,按钮标题图片设置,图片坐标修改