UIImageView 的 tintColor 在故事板中无效,但在代码中有效。

18

Xcode 9 beta 6,iOS 11

我下载了一个Instagram的标志,它是一个.png文件,并在Main.storyboard中创建了一个UIButtonUIImageView。设置标志图像如下:

设置模式

我将UIButtonUIImageViewTintColor设置为white,但是当我运行项目时,imageView的图像颜色仍然是黑色,而button是白色。

imageView的设置:

输入图像描述

黑色

为什么imageViewbutton使用相同的图像设置,但imageView是黑色而button是白色?谢谢。

补充说明:

当我用代码添加imageView的子视图时,它正常工作。真的很奇怪!输入图像描述


你能分享一下设置UIButtonUIImageView图片的代码吗? - Malik
@Malik,我没有使用代码,而是使用了Storyboard。我确信Storyboard中的所有设置都是正确的。刚才我发现了一个奇怪的行为,当我使用代码添加imageView时,它可以正常工作(变成白色)。我将在问题描述中提供补充说明。 - Ringo
在这里查看“简易修复方案”:https://dev59.com/ZlgR5IYBdhLWcg3wm-S6 :) - Jens Schwarzer
@JensSchwarzer,苹果告诉我这是个Bug,我不知道它是否已经修复了。 - Ringo
@Ringo 确实看起来像是一个 bug。我只是提出了一个解决方法,直到它被修复为止 :) - Jens Schwarzer
显示剩余2条评论
4个回答

5
问题在 Xcode 9.4.1 中仍然存在。
在用户自定义运行属性中设置所需的颜色来设置 tintColor 可以帮助我解决这个问题:
请见下图:enter image description here

好的,我不认为苹果公司不会再修复这个问题。我不知道为什么。很多人都发现了这个问题。而且苹果公司已经知道这是一个问题。 - Ringo
很失望,XCode 10.2 仍然存在相同的 bug =( - Ilker Baltaci
1
它在iOS 11.x上仍然发生,但在iOS 13.x上运行良好。使用Xcode 11.3.1进行测试。我必须以编程方式设置alwaysTemplate和tintColor。 - Duan Nguyen

4

我在AppDelegate中设置了全局的tintColor。

在iOS 13 Xcode 11的黑暗模式下,我无法获得正确的着色颜色。但是,当为一个工具栏按钮设置相同的图像着色时,它看起来是正确的。

我通过在images.xcassets中将图像的Render As属性设置为Template Image来解决了这个问题。我既不需要从storyboard中删除UIImageView,也不需要再次添加或添加用户定义的属性。


1
那帮了我很多。谢谢亲爱的。 - Mamad Farrahi

1
你可以通过从Storyboard更改图像的全局色调来实现这一点:

Global tint color


我已经卸载了XCode大约1.5年,我不确定你的解决方案是否有效。 - Ringo

0

显然,故事板存在一个问题,即如果在将图像添加到xcassets作为模板之前添加图像视图,则色调颜色不会生效(如果在故事板中设置)。我能够重现这个问题。我尝试了以下方法,它起作用了。

  • 删除UIImageView
  • 创建一个新的UIImageView
  • 设置图像和TintColor

1
谢谢,但我已经删除了 UIImageView 并创建了一个新的,天哪,我的问题仍然存在。我发现 Xcode9 beta6 有几个奇怪的行为。 - Ringo
无论如何,谢谢。我希望这个奇怪的问题不会在发布版本中出现。 - Ringo
苹果告诉我这是一个已知的漏洞。 - Ringo
我不感到惊讶 - Malik
@RaviSisodia 我不确定苹果公司是否已经解决了这个问题。我已经向苹果提交了这个问题,他们告诉我这是一个已知的问题。去年我在苹果中国面试时也提到了这个问题。 - Ringo
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接