2014-03-04 73 views
8

我一直在尋找了近2小時,無法找到這個問題的一個堅實的答案。更改所有的UIButton字體

我試圖用外觀機制,但它似乎你不能用它更改字體。

我看了看回答這裏建議: How to change all UIButton fonts to custom font

有3個答案:

  1. 使用buttonOutlet,但是這需要其在整個項目中的所有按鈕,最多可以連接到一個數組。
  2. 使用範疇,但是從我讀它的高度器重使用類別 以覆蓋現有方法。
  3. 使用從UIButton的派生自定義類,但是當我嘗試使用提供的類 和Interface Builder中沒有設置它發生,這使我相信你需要programitcally添加按鈕。

編輯:有答案3,如果你實現 - (ID)的initWithCoder:(NSCoder *)的UIButton 這使您可以簡單地更改界面生成器之類的aDecoder方法,但你仍然需要做的它適用於項目中的所有按鈕。

沒有人有任何新的想法?

+1

使用3,您是否將按鈕的類更改爲Interface Builder中的自定義類? – sbarow

+0

我解決了我的問題3.我需要實現 - (id)initWithCoder:(NSCoder *)aDecoder方法。這是一個叫.. – oopsi

+1

這與'xcode IDE'有什麼關係? – Popeye

回答

-1
for (UIButton *button in self.view.subviews) { 
     if ([button isKindOfClass:UIButton.class]) { 
      button.titleLabel.font = [UIFont fontWithName:@"HelveticaNeue-Thin" size:14.0f]; 
     } 
    } 

如果您無法使鏈接的問題起作用,那麼可以工作。

+0

這解決了我的問題 – garatu

1

您可以使用UIAppearance自定義視圖的任何控制。更多的信息,你可以在這個非常有用的文章NSHipster

+4

'UIButton'上的'setFont'在iOS3中已被棄用,儘管這可能是危險的。 –

+0

UIButton外觀沒有字體的設施 – miniBill

0

出於某種原因,只有從蘋果神知道,

[[[UIButton appearance] titleLabel] setFont:fontButton]; 

不起作用。爲我工作的溶液中迅速被發現在

How to set UIButton font via appearance proxy in iOS 8?

在Objective-C的解決方案是創建一個公開titleLabel字體這樣

的UIButton + TitleLabelFont.h

類別
#import <UIKit/UIKit.h> 

@interface UIButton (TitleLabelFont) 

@property (strong, nonatomic) UIFont *titleFont; 

@end 

UIButton + TitleLabelFont。米

#import "UIButton+TitleLabelFont.h" 

@implementation UIButton (TitleLabelFont) 

- (UIFont *)titleFont { 

    return self.titleLabel.font; 
} 

- (void)setTitleFont:(UIFont *)titleFont { 

    self.titleLabel.font = titleFont; 
} 

@end 

然後導入類別的UIButton + TitleLabelFont的來源,你與

#import "UIButton+ASLAdditions.h" 

簡單地設置外觀,你就可以設定

[UIButton appearance].titleFont = fontButton; 
外觀

經過測試和完美工作

3

In Swift3

UIButton.appearance().titleLabel?.font = font