UITableView 单元格中的图像不支持 tintColor

Posted

技术标签:

【中文标题】UITableView 单元格中的图像不支持 tintColor【英文标题】:Images in UITableView cells are not honoring tintColor 【发布时间】:2014-09-15 13:20:24 【问题描述】:

我有一个UITableView,它由静态单元格组成。在 IB 中,我将每个 UITableViewCell 的样式设置为“基本”并设置图像(见屏幕截图)。我的导航栏中的按钮尊重tintColor 属性,但表格视图中的图像没有。到目前为止,我已经完成了 IB 中的所有工作 - 如果我希望图像也符合 tintColor 属性,我是否必须使用代码?

谢谢

【问题讨论】:

***.com/questions/18855080/… 所以这不能在IB中完成?这似乎真的很奇怪,因为恕我直言,这通常是我默认情况下想要发生的事情。而且由于这些是静态单元格,我真的不想在不需要时用代码做所有事情。 cellImageView 没有 tint color 属性。您必须使用自定义单元格和少量代码。 ***.com/questions/5145953/… 如果您不想在代码中做任何事情,为什么不根据需要更改图像原始颜色? @dopcn 我希望以后能够轻松更改颜色。所以用特定颜色创建我的图像会很麻烦。 【参考方案1】:

每个UIImageViewios7+ 上都有tintColor 属性

尝试在故事板User Defined Runtime Attributes中将单元格的imageView.image.renderingMode设置为UIImageRenderingModeAlwaysTemplate

【讨论】:

我正在使用呈现为模板的矢量 pdf。除了图像位于图像视图内的自定义单元格之外,它们在任何地方都可以很好地显示设置的色调。我该如何处理? 我对包含在表格单元格中的图像视图有同样的问题。我通常只使用 UIButton 并将其interactionEnabled 设置为false。几乎没有什么区别,只是一个按钮并不总是紧贴图像的确切大小,特别是非常小的按钮。【参考方案2】:

经过这么多版本,这个问题真是令人头疼!假设一切都“正确”(模板图像等),唯一可以肯定的解决方法是继承 UIImageView 并用这个覆盖 didMoveToSuperview...

- (void)didMoveToSuperview

    [self setHighlighted:YES];
    [self setHighlighted:NO];
    [super didMoveToSuperview];

这是一个 hack,但它可以工作。

【讨论】:

这个技巧在这种情况下效果很好,只有在点击单元格后才会应用色调。谢谢! 相同。在 UIImageView 位于 UICollectionViewCell 中并且直到单元格被点击后才被突出显示的场景中,将其添加到我的 UIImageView 子类确实会产生正确的效果。 叹息...【参考方案3】:

这是一个例子:

UIImage *image = [[UIImage imageNamed:@"ic_email_white"]
                  imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
[[cell imageView] setImage:image];
[[cell imageView] setTintColor:[UIColor redColor]];

【讨论】:

【参考方案4】:

以下设置对我很有效。

在情节提要中,将单元格的contentViewtintColor 设置为您想要的颜色,将UIImagviewtintColor 设置为default

【讨论】:

以上是关于UITableView 单元格中的图像不支持 tintColor的主要内容,如果未能解决你的问题,请参考以下文章

更新 UITableView 单元格中的特定按钮图像

在 UITableView 单元格中的图像上填充

单元格中的 UITableView 动画导致平滑滚动中断

表格视图单元格中的图像对齐不正确

动态更改 UITableView 单元格中 UIButton 的图像

UITableView 单元格中的 imageView 在 touchdown 事件中违反 setClipsToBounds