2016-03-01 544 views
2

我是Swift的新手,我試圖改變水龍頭的按鈕顏色。輕觸按鈕時,它應該改變顏色,並在釋放時它應該回到原來的按鈕顏色。Swift:點擊時改變按鈕的顏色

一個例子是計算器。當你點擊一個按鈕時,它會從淺灰色變成深灰色,並且當用戶將他們的手指從按鈕上移開時,它會回到原來的淺灰色。我該如何去做呢?

到目前爲止,我只帶了這個..

@IBAction func changeButtonColourOnTouch(sender: UIButton) { 

    zeroButton.backgroundColor = UIColor.blueColor() 

} 

上面的代碼更改按鈕的顏色爲藍色,但藍色的停留。

+0

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

回答

5

問題是,釋放按鈕後,您應該將顏色返回到原始狀態。

在動作TouchUpInside(發行版)和TouchDown(按下)中,您可以直接鏈接故事板,在每個事件中將按鈕顏色更改爲正確的狀態。

enter image description here

或者你可以在按鈕的代碼添加一個目標,鏈接到的功能,如代碼波紋管顯示它。通過本中的鏈接UIButton with hold down action and release action

+0

謝謝!這工作完美。 – daanyyaal

+0

我很高興它幫助你。 :) – UlyssesR

+0

BEST Answerr everrrr !!! –

1

你也可以使用輕拍姿態和更改按鈕作爲用戶的顏色調整

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

它有點高級,但您會從中學到很多東西。

1

您還可以使用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) 

現在顏色會自動改變,您不必手動處理它。

0

如果你想,對於一個編程定義按鈕,只是它的初始化過程中聲明的類型系統的按鈕:

let button = UIButton(type: .system)