具有错误背景颜色的自定义 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有关。您看到的蓝色是这样应用的 selectedBackgroundView UIView *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

具有自定义边框颜色的 UIButton,iPhone

导航条的自定义:背景颜色设置,按钮标题图片设置,图片坐标修改

python xlwt设置单元格的自定义背景颜色

如何在通知内容扩展中为我的自定义视图应用自定义字体/颜色和半透明背景?

使用 Xcode 和 Swift 创建的 iOS 应用程序中状态栏的自定义背景颜色