按住自定义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 } }