2015-03-24 129 views
0

這裏是設置爲IB類按鈕的一個簡單的例子自定義按鈕:按鈕標籤顏色的變化不工作,如果字體也改變

#import "TestButton.h" 
@implementation TestButton 

// Only override drawRect: if you perform custom drawing. 
// An empty implementation adversely affects performance during animation. 
- (void)drawRect:(CGRect)rect { 
    UIFont * font = [UIFont systemFontOfSize:8]; 
    if (self.setFont) 
     self.titleLabel.font = font; 
    self.titleLabel.textColor = [UIColor redColor]; 
} 

@end 

如果setfont程序是假的,那就是,字體不變,標籤文本顏色如預期的那樣變爲紅色。但如果它是真的,那麼按鈕的文本顏色就是它在IB中設置的任何顏色。

所以問題是這裏發生了什麼,以及如何更改以編程方式在IB中分配的按鈕的文本和字體。

如果有人想看到這些特點,也IBDesignable如何個性就可以了,看到demo project

回答

0

更換

self.titleLabel.textColor = [UIColor redColor]; 

[self setTitleColor:[UIColor redColor] forState:UIControlStateNormal]; 
+0

謝謝 - 這個工程。有趣的是,當在xCode 6.2中的setFont上使用IB_DESIGNABLE和IBInspectable時,它會做相反的事情。也就是說,當我將字體設置爲關閉時,它按預期更新標題顏色,但啓用時,文本保持默認顏色,而不是紅色。無論如何,你會知道爲什麼設置titleLabel的顏色不起作用嗎? – farhadf 2015-03-25 16:02:15

+0

我個人不確定蘋果爲什麼不允許第一種方法工作,但我知道第二種方法更好,因爲它允許您爲「UIControlStateNormal」之外的多個狀態設置顏色。 (例如,您可以使用'UIControlStateHighlighted'來定義單擊按鈕時文本的顏色) – 2015-03-25 16:06:12

0

下面的代碼是用於設置文本:

[self setTitle:@"New Text" forState:UIControlStateNormal]; 

如果您想要在按鈕文件本身以外的任何地方設置標題的標題或顏色,可以嘗試向按鈕添加兩個公共屬性。一個標題顏色的NSString屬性(self.titleString)和一個UIColor屬性。然後,您可以在視圖控制器或視圖中的任何位置設置標題和/或標題顏色。然後你會在你的按鈕文件中使用這些屬性,如

[self setTitle:self.titleString forState:UIControlStateNormal];