2015-07-12 283 views
4

我正在嘗試製作一個基本的應用程序我的iPhone。我對Xcode完全陌生,並且在Google上有一個瀏覽器,並且找不到我正在尋找的內容。我正在爲我的飛機做一個清單。Swift:改變按鈕顏色一次按下

我基本上有一個視圖控制器上有幾個按鈕。而我想要的是按鈕一旦按下就從灰色變成藍色,除非再次按下,否則保持藍色。我完全不知道Xcode和Swift語言,所以如果有人可以幫忙解釋一下,就好像你在向一個孩子解釋。

到目前爲止,我已經設法讓所有的頁面設置和滾動工作,但我只需要按鈕來改變現在。

謝謝你, Ty。

回答

4

使用的UIButton類的這個方法

func setTitleColor(_ color: UIColor?, 
      forState state: UIControlState) 

你正在尋找的狀態.Selected

當然,你必須自己處理選中狀態的切換按鈕是不是原生的行爲。

4

這很簡單。

您將首先在ViewDidLoad()方法中實際設置按鈕的背景色。在此之前,您應該已經爲該按鈕設置了IBOutlet。在我的例子中,我只想給出口命名一個通用的「按鈕」。

你IBOutlet中應該是:

@IBOutlet weak var button:UIButton! 

不要忘了出口掛鉤的按鈕,以及!

接下來,設置按鈕的背景圖像中的viewDidLoad灰色,像這樣:

override func viewDidLoad() { 
    super.viewDidLoad() 

    button.backgroundColor = UIColor.grayColor() 
} 

這應該給你的按鈕,一個通用的灰色背景。如果您想更好地控制實際顏色,可以用button.backgroundColor = UIColor(red: CGFloat, green: CGFloat, blue: CGFloat, alpha: CGFloat)代替button.backgroundColor = UIColor.grayColor(),用您選擇的值替換「CGFloat」。

接下來,實際的代碼更改按鈕顏色:

做一個IBAction爲,並將其連接到按鈕。礦被稱爲:

@IBAction func buttonTapped(sender: AnyObject) {} 

你的條件是,如果按鈕是灰色的,它應該成爲龍頭藍色,如果它是藍色的,那麼它應該變成灰色自來水。如果這是什麼語句也就是如果按鈕的背景顏色是灰色的,它將它所

@IBAction func buttonTapped(sender: AnyObject) { 
    if button.backgroundColor == UIColor.grayColor() { 
     button.backgroundColor = UIColor.blueColor() 
    } 
    else if button.backgroundColor == UIColor.blueColor() { 
     button.backgroundColor = UIColor.grayColor() 
    } 
} 

所以,我們剛剛定義的IBAction爲中,您將添加一個IF語句,像這樣藍色,或者如果背景顏色是藍色,則將其設置爲灰色。如果需要,您可以更換UIColor.BlueColor()UIColor.GrayColor(),使用更個性化的UIColor(red: CGFloat, green: CGFloat, blue: CGFloat, alpha: CGFloat)

編輯:如果你只是想改變按鈕的文本顏色,只需添加本聲明或它在所需位置的變化:

button.setTitleColor(UIColor.grayColor(), forState: UIControlState.Selected) 
0

對於斯威夫特3:

// for change background color of a selected button in a collection view 
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 
    let collectionCell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) 
    collectionCell.button.addTarget(self, action: #selector(button_Select(_:)), for: .touchUpInside) // add target for action 

    return collectionCell 
} 

@objc func button_Select(_ sender: UIButton) { 
    let button = sender 

    if button.isSelected == true { 
     button.backgroundColor = UIColor.uicolorFromHex(0x262D35, alpha: 100) 
     button.setTitleColor(UIColor.white, for: .normal) 
     button.isSelected = false 
    } else { 
     button.backgroundColor = UIColor.uicolorFromHex(0xF3CD70, alpha: 100)//Choose your colour here 
     button.setTitleColor(UIColor.white, for: .normal) //To change button Title colour .. check your button Tint color is clear_color.. 
     button.isSelected = true 
    } 
}