2014-12-04 71 views
5

基本上,我的主屏幕上有三個按鈕。Swift - 當UIButton被挖掘時更改文本的顏色和大小

當我選擇其中一個按鈕時,我希望所選按鈕上的文字變成粗體並更改顏色(藍色)。

當我選擇不同的按鈕時,我希望新選擇的按鈕變成粗體並改變顏色(藍色),並且先前選擇的按鈕恢復正常。 (非粗體和黑色文本)

我有這些按鈕發送操作到腳本。

這是我的,我似乎無法得到它的工作。幫助將非常感謝!

@IBAction func buttonOne(sender: UIButton){ 
    sender.setTitleColor(UIColor.blueColor(), forState: UIControlState.Highlighted) 
} 

我試過了。高亮和在UIControlState上選擇,似乎都沒有工作。我也嘗試了以下,但我無法得到它的工作。

@IBAction func buttonOne(sender: UIButton){ 
    sender.titleLabel?.textColor = UIColor.blueColor() 
} 

我想,因爲發件人是一個UIButton,它是被點擊的按鈕,取值關閉它並重置他們會工作。我相信我錯過了一些東西。

謝謝

回答

4

聽起來像是你想UIControlState.Normal

Selected什麼也不做在大多數情況下,和Highlighted只有當你按下按鈕。 在這裏看到更多的信息:https://developer.apple.com/library/ios/documentation/uikit/reference/uicontrol_class/index.html#//apple_ref/doc/constant_group/Control_State

+0

謝謝!它將顏色改爲黑色。在過去的一個小時裏,我一直在盯着我的顯示器,而且還沒有弄清楚這一點。謝謝!後續問題雖然 - 當我點擊一個新按鈕時,如何讓其他按鈕變回黑色? – Nate4436271 2014-12-04 16:43:00

+0

(黑色?以爲你想要藍色?)將每個按鈕連接爲視圖控制器中的IBOutlet屬性,並且當觸發了一個IBAction時,該方法內部也會根據需要更改其他按鈕。可能需要一個屬性來記住哪個按鈕是活動的按鈕(例如1-3等的數字)。您也可以考慮使用分段控件而不是3個單獨的按鈕。 – shim 2014-12-04 17:03:37

+1

我希望活動框爲藍色,而不活動框爲黑色。您的建議非常有幫助,謝謝! – Nate4436271 2014-12-04 17:54:40

2

也許你可以用一個變換操作

@IBAction func buttonPressed(sender: UIButton) { 
    sender.titleLabel!.textColor = UIColor.blueColor() 
    sender.transform = CGAffineTransformMakeScale(0.8, 0.8) 
} 

@IBAction func buttonReleased(sender: UIButton) { 
    sender.titleLabel!.textColor = UIColor.redColor() 
    sender.transform = CGAffineTransformIdentity 
} 
+0

感謝您的快速回答!由於我有三個按鈕,我想避免爲每個按鈕設置兩個功能。如果我無法弄清楚狀態,生病嘗試一下。看起來像一個很好的解決方案。 – Nate4436271 2014-12-04 16:43:57

+0

只是爲3個按鈕保存一個數組,並在您的點擊函數中迭代它們以重置它們。然後爲點擊的那個設置點擊狀態。 – datayeah 2015-10-07 23:22:03

0

提供標籤的所有按鈕,連接每個按鈕的行動同樣的功能,並嘗試下面的代碼:

@IBAction FUNC butnClicked(發件人:UIButton的){

for tg in 1...2 { 
     print(sender.tag) 
     let tmpButton = self.view.viewWithTag(tg) as? UIButton 
     if tmpButton?.tag == sender.tag { 
      tmpButton?.setTitleColor(.red, for: .normal) 
     } else { 
      tmpButton?.setTitleColor(.gray, for: .normal) 
     } 
    } 

希望將幫助。