2014-03-04 44 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