按住自定义UIButton时,改变深灰色的颜色?

我有一个自定义的UIButton这是一个云,透明的黑色和白色.png文件,没有停机状态,只有一个图像。 当用手指轻敲时,它变成深灰色。 我试图把那个黑灰色改变成一点点压迫感。 button在视图中打开,而不在标签栏,工具栏或导航控制器中。

我已经尝试设置tintColor (文档有助于通知我只适用于“某些”types的button,哪些没有迹象)。

我也尝试改变我在Interface Builder中可以find的有关突出显示颜色,默认状态等的所有内容。没有任何改变。

我甚至尝试将button自己的图像设置为UIControlStateHighlighted状态,但是即使这样,当我将手指放在它上面时,也会出现深灰色的覆盖图。

我怎样才能改变这种颜色? 我在这里看过很多其他的问题,一直无法find适合我的解决scheme。 任何帮助将不胜感激!

编辑:我解决了这个问题,使用UIImage类添加一个方法,使用CoreGraphics应用色彩提供的UIImage 。 然后我把这个图像作为亮点,一切都很好。 看起来很多箍拉改变颜色苹果应该让我们改变,但c'est la vie。

你说你为UIControlStateHighlighted状态设置一个自定义图像。 这应该禁用默认行为。

如果仍有问题,可以通过将adjustsImageWhenHighlighted属性设置为NO来禁用此效果,并使用所需的任何自定义效果。

如果adjustsImageWhenHighlighted = NO不起作用,请将buttontypes设置为自定义(IB或以编程方式)。

默认buttontypes:系统,改变突出显示button的行为。

Swift 3:

 myButton.adjustsImageWhenHighlighted = false 

每次按下button时,button都以灰色突出显示,所以我遇到了一个与定制UIButton类似的问题。 我通过inheritanceUIButton解决了这个问题,并且在实现中我覆盖了一个方法,(void)setHighlighted:method并保持为空:

 - (void)setHighlighted:(BOOL)highlighted { // Leave empty to prevent super from doing whatever // that it is doing to show the grey highlight. } 

这停止了​​任何types的突出显示,因为我没有在方法中做任何事情。 如果你所要做的只是删除任何高亮效果,这是一个更好的方法。

所以在你的代码中,创build一个UIButton的子类,重写setHighlighted方法,然后让你的自定义button成为这个自定义类的一个子类。

你可以写一个自定义的button

 class ActionButton: UIButton { var originalBackgroundColor: UIColor! override var backgroundColor: UIColor? { didSet { if originalBackgroundColor == nil { originalBackgroundColor = backgroundColor } } } override var isHighlighted: Bool { didSet { guard let originalBackgroundColor = originalBackgroundColor else { return } backgroundColor = isHighlighted ? originalBackgroundColor.darken() : originalBackgroundColor } }