Swift:点击时改变按钮的颜色
问题描述:
我是Swift的新手,我试图改变水龙头的按钮颜色。轻触按钮时,它应该改变颜色,并在释放时它应该回到原来的按钮颜色。Swift:点击时改变按钮的颜色
一个例子是计算器。当你点击一个按钮时,它会从浅灰色变成深灰色,并且当用户将他们的手指从按钮上移开时,它会回到原来的浅灰色。我该如何去做呢?
到目前为止,我只带了这个..
@IBAction func changeButtonColourOnTouch(sender: UIButton) {
zeroButton.backgroundColor = UIColor.blueColor()
}
上面的代码更改按钮的颜色为蓝色,但蓝色的停留。
答
问题是,释放按钮后,您应该将颜色返回到原始状态。
在动作TouchUpInside
(发行版)和TouchDown
(按下)中,您可以直接链接故事板,在每个事件中将按钮颜色更改为正确的状态。
或者你可以在按钮的代码添加一个目标,链接到的功能,如代码波纹管显示它。通过本中的链接UIButton with hold down action and release action
答
你也可以使用轻拍姿态和更改按钮作为用户的颜色调整
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)
您可以使用此【答案】(http://stackoverflow.com/a/30604658/5812592)冬季化。 – Elisa