如何禁用 UIButton Tint Color?

Posted

技术标签:

【中文标题】如何禁用 UIButton Tint Color?【英文标题】:How to disable UIButton Tint Color? 【发布时间】:2014-12-14 23:42:17 【问题描述】:

我知道我的情况可能很少见,但在这种情况下如何禁用 UIButton 色调?

我有一个自定义的 UIButton,它具有属性标题,以帮助以不同的颜色和 alpha 显示按钮模式。

在我的自定义按钮 .m 文件中,我设置了类似的内容

[self setBackgroundImage:[self imageWithColor:[UIColor grayColor]] forState:UIControlStateSelected];

当按钮被选中时,这将使背景颜色变为灰色

然而真正的结果是这样的:

文本颜色如何变成白色,我认为这是因为 UIButtons 上的色调效果。

我是否可以将背景设置为灰色,而文本仍保持按钮选定状态下属性标题中设置的颜色?

谢谢

【问题讨论】:

您应该为正常状态和选定状态设置文本颜色,而不是属性标题。 设置按钮的背景颜色。 【参考方案1】:
yourbutton = [UIButton buttonWithType:UIButtonTypeCustom];

                        (or)

如果您在情节提要中放置了按钮....选择按钮类型为自定义而不是系统。

【讨论】:

嗯,Xcode 10,ios 12.4 ... 不适合我。我的按钮是自定义的,在 xib 文件中手动放置和配置。【参考方案2】:

您可以覆盖UIButton 子类中的setImage:forState: 并将渲染模式更改为.alwaysOriginal

override func setImage(_ image: UIImage?, for state: UIControlState) 
    let newImage = image?.withRenderingMode(.alwaysOriginal)
    super.setImage(newImage, for: state)

【讨论】:

【参考方案3】:

简单,只需前往资源中的图片,并将其渲染 模式设置为“原始图片”,查看下图:

【讨论】:

【参考方案4】:

按照以下步骤获取结果:

首先设置UITabBar背景颜色清除

现在把这一行放在第一页的 viewDidLoad 方法中:

[[UITabBar appearance] setTintColor:SETYOURCOLOR];

希望对你有所帮助。

【讨论】:

以上是关于如何禁用 UIButton Tint Color?的主要内容,如果未能解决你的问题,请参考以下文章

根据状态更改 UIButton 中 ImageView 的 tint 颜色

单次点击 Tint 2 UIButton

详解 UIView 的 Tint Color 属性

详解 UIView 的 Tint Color 属性

将 NavigationBar Tint/Color 更改为 Navigation Stack 中每个 ViewController 的不同值

MKUserTrackingBarButtonItem tint color IOS7 不起作用,但在 IOS 6 上起作用