2011-07-15 51 views
144

我設置文本顏色UIButtonUIButton的標題文本顏色

headingButton.titleLabel.textColor = [UIColor colorWithRed:36/255.0 
                green:71/255.0 
                 blue:113/255.0 
                alpha:1.0]; 

它不改變顏色相同的代碼,我使用的是在它的工作的另一個代碼。

+0

可能重複[?我怎樣才能改變UIButton的標題顏色(http://stackoverflow.com/questions/2474289/how-can-i-改變 - uibutton-標題顏色) – silentBeep

回答

385

使用

目標C

[headingButton setTitleColor:[UIColor colorWithRed:36/255.0 green:71/255.0 blue:113/255.0 alpha:1.0] forState:UIControlStateNormal]; 

夫特

headingButton.setTitleColor(.black, for: .normal) 
+1

這個工程。但原始問題中的代碼也經常起作用。任何人都知道爲什麼標題只是有時無法回答問題中的代碼? – crgt

+6

原因是當單擊按鈕或以其他方式更改狀態時,按鈕中的代碼將重置titleLabel的屬性以匹配按鈕對該狀態的內部設置。 – psycotica0

+1

蘋果的文檔聲明如下:「不要使用標籤對象來設置文本顏色或陰影顏色,而是使用該類的setTitleColor:forState:和setTitleShadowColor:forState:方法來進行這些更改。「雖然沒有真正解釋」爲什麼「 – clauswey

3

我創建的自定義類myButton的UIButton延長。然後Identity Inspector裏面添加了這個:

enter image description here

在此之後,按鈕類型更改爲定製

enter image description here

然後你可以設置屬性,如textColorUIFontUIButton爲不同的狀態:

enter image description here

然後,我還創建了內部MyButton類兩種方法,我有我的代碼裏面打電話的時候,我想UIButton所強調的要顯示的:

- (void)changeColorAsUnselection{ 
    [self setTitleColor:[UIColor colorFromHexString:acColorGreyDark] 
       forState:UIControlStateNormal & 
         UIControlStateSelected & 
         UIControlStateHighlighted]; 
} 

- (void)changeColorAsSelection{ 
    [self setTitleColor:[UIColor colorFromHexString:acColorYellow] 
       forState:UIControlStateNormal & 
         UIControlStateHighlighted & 
         UIControlStateSelected]; 
} 

您必須設置titleColor正常,亮點並選擇UIControlState,因爲根據UIControlState的文檔,一次可以有多個狀態。 如果您不創建這些方法,UIButton將顯示選擇或突出顯示,但它們不會保留在您在UIInterface Builder內部設置的UIColor,因爲它們僅用於顯示選擇的簡短顯示,而不用於顯示選擇本身。

3

在斯威夫特:

更改標籤文本顏色是不是改變它的UIButton有很大不同。要更改文本顏色爲UIButton使用這種方法:

self.headingButton.setTitleColor(UIColor(red: 107.0/255.0, green: 199.0/255.0, blue: 217.0/255.0), forState: UIControlState.Normal)