2014-01-28 102 views
1

我現在正在開發ios 6的應用程序。這是一種表單設計應用程序,我發現如果我們在應用程序中更改titlelabel.textColor某個點,那麼如果我們更改字體,textColor將在分配時更改爲默認值。 我檢查這個像下面設置UIButton的titleLabel字體會將textColor更改爲默認值?

我拖累樣本按鈕,我的樣本視圖 - 控制和創造-viewDidLoad

[myButton.titleLabel setTextColor:[UIColor redColor]]; 

,並在按鈕的動作我不喜歡在下面viewcontroller.h文件 名爲myButton一個IBOutlet屬性下面

- (IBAction)btnLoginClicke:(UIButton *)sender { 
    [myButton.titleLabel setFont:[UIFont fontWithName:@"Arial" size:18]]; 

是我之前和之後的按鈕點擊動作截圖

enter image description here

enter image description here

回答

1

如果您設置的UIButton標題使用顏色:

[myButton setTitleColor:[UIColor redColor] forState:UIControlStateNormal]; 

當你將一個新的字體顏色信息也不會丟失。

我認爲這是因爲UIButton類在內部根據您爲不同的UIButton狀態使用setTitleColor(或故事板)設置的不同顏色設置textLabel的顏色。直接改變textLabel的顏色不會改變UIButton爲每個狀態存儲的顏色,並且每次UIButton需要重繪時它們都會重新應用。這是設置新字體時會發生的情況 - UIButton必須重新繪製自己,但是它會使用setTitleColor:forState:的顏色設置來執行此操作。

5

如果您要保持應用程序中所有按鈕的顏色相似,那麼最好選擇全局設置。那麼你不必擔心所有地方的按鈕標題顏色。

將這些行放在您的appDelegatedidFinishLaunchWithOptions方法中。

[[UIButton appearance] setTitleColor:[UIColor redColor] forState:UIControlStateNormal]; 
[[UIButton appearance] setTitleColor:[UIColor greenColor] forState:UIControlStateHighlighted]; 

希望有所幫助。