Swift:点击时改变按钮的颜色

Swift:点击时改变按钮的颜色

问题描述:

我是Swift的新手,我试图改变水龙头的按钮颜色。轻触按钮时,它应该改变颜色,并在释放时它应该回到原来的按钮颜色。Swift:点击时改变按钮的颜色

一个例子是计算器。当你点击一个按钮时,它会从浅灰色变成深灰色,并且当用户将他们的手指从按钮上移开时,它会回到原来的浅灰色。我该如何去做呢?

到目前为止,我只带了这个..

@IBAction func changeButtonColourOnTouch(sender: UIButton) { 

    zeroButton.backgroundColor = UIColor.blueColor() 

} 

上面的代码更改按钮的颜色为蓝色,但蓝色的停留。

+0

您可以使用此【答案】(http://stackoverflow.com/a/30604658/5812592)冬季化。 – Elisa

问题是,释放按钮后,您应该将颜色返回到原始状态。

在动作TouchUpInside(发行版)和TouchDown(按下)中,您可以直接链接故事板,在每个事件中将按钮颜色更改为正确的状态。

enter image description here

或者你可以在按钮的代码添加一个目标,链接到的功能,如代码波纹管显示它。通过本中的链接UIButton with hold down action and release action

+0

谢谢!这工作完美。 – daanyyaal

+0

我很高兴它帮助你。 :) – UlyssesR

+0

BEST Answerr everrrr !!! –

你也可以使用轻拍姿态和更改按钮作为用户的颜色调整

zeroButton.addTarget(self, action: Selector("holdRelease:"), forControlEvents: UIControlEvents.TouchUpInside); 
    zeroButton.addTarget(self, action: Selector("HoldDown:"), forControlEvents: UIControlEvents.TouchDown) 

    //target functions 
    func HoldDown(sender:UIButton) 
    { 
    zeroButton.backgroundColor = UIColor.blueColor() 
    } 

    func holdRelease(sender:UIButton) 
    { 
    zeroButton.backgroundColor = UIColor.whiteColor() 
    } 

守则轻按按钮

你可以看到苹果有关UIGestureRecognizer的文档here

它有点高级,但您会从中学到很多东西。

您还可以使用setbackgroundImageForState将彩色图像定义为您感兴趣的所有UIControlState的按钮背景,例如,正常,突出显示,禁用,选中。

let cx = UIGraphicsGetCurrentContext() 
let color = UIColor.redColor() 
let state = UIControlState.Selected 

UIGraphicsBeginImageContext(CGSize(width:1, height:1)) 
CGContextSetFillColorWithColor(cx, color.CGColor) 
CGContextFillRect(cx, CGRect(x:0, y:0, width:1, height:1)) 
let colorImage = UIGraphicsGetImageFromCurrentImageContext() 
UIGraphicsEndImageContext() 

self.zeroButton.setBackgroundImage(colorImage, forState: state) 

现在颜色会自动改变,您不必手动处理它。

如果你想,对于一个编程定义按钮,只是它的初始化过程中声明的类型系统的按钮:

let button = UIButton(type: .system)