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】:每个UIImageView
在ios7+ 上都有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】:以下设置对我很有效。
在情节提要中,将单元格的contentView
tintColor
设置为您想要的颜色,将UIImagview
的tintColor
设置为default
。
【讨论】:
以上是关于UITableView 单元格中的图像不支持 tintColor的主要内容,如果未能解决你的问题,请参考以下文章
动态更改 UITableView 单元格中 UIButton 的图像
UITableView 单元格中的 imageView 在 touchdown 事件中违反 setClipsToBounds