如何将所有UIButton字体更改为自定义字体?

时间:2011-07-13 19:08:13

标签: iphone xcode fonts interface-builder

有没有办法做到这一点? 我希望有一个自定义字体,我已下载以显示在UIButton上。

6 个答案:

答案 0 :(得分:7)

如果您使用IBOutletCollection,那么这应该是直接的。

@property (nonatomic, retain) IBOutletCollection(UIButton) NSArray *buttons;

将按钮连接到此插座集合,然后使用

一次性更改字体
[self setValue:[UIFont fontWithName:@"Helvetica" size:30] forKeyPath:@"buttons.font"];

答案 1 :(得分:5)

你可以做的一种方法是将UIButton子类化为你想要的字体并使用你的子类而不是UIButton。

修改

//
//  MyUIButton.h
//

@interface MyUIButton : UIButton {

}
+ (id)buttonWithType:(UIButtonType)buttonType;
@end

//
//  MyUIButton.m
//


#import "MyUIButton.h"


@implementation MyUIButton

+ (id)buttonWithType:(UIButtonType)buttonType{
   UIButton *button = [UIButton buttonWithType:buttonType];
   [[button titleLabel] setFont:[UIFont fontWithName:@"Helvetica-Bold" size:12]];
   return button;
}

@end

Then just use it like this:

[MyUIButton buttonWithType:UIButtonTypeCustom]

你可以尝试的另一件事是为UIButton编写一个类别并在那里覆盖它。

<强> EDIT2

    //
    //  UIButton+Font.h
    //

#import <Foundation/Foundation.h>

@interface UIButton (DefaultFontExtension)
+ (id)buttonWithType:(UIButtonType)buttonType;
@end


    //
    //  UIButton+Font.m
    //

#import "UIButton+Font.h"

@implementation UIButton (DefaultFontExtension)

+ (id)buttonWithType:(UIButtonType)buttonType{
       UIButton *button = [UIButton buttonWithType:buttonType];
       [[button titleLabel] setFont:[UIFont fontWithName:@"Helvetica-Bold" size:12]];
       return button;
    }

@end

现在只需导入“UIButton + Font.h”,它将覆盖默认的UIButton设置。

答案 2 :(得分:3)

https://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIButton_Class/UIButton/UIButton.html#//apple_ref/doc/uid/TP40006815

button.titleLabel.font = [UIFont fontWithName:FONT_NAME size:FONT_SIZE];

Apple的文档非常好。首先尝试在那里查找,然后搜索SO,然后搜索Google,然后写一个问题。 :)

修改 嗯,最简单的方法是用常量替换任何fontWithName参数,例如宏。

#define BUTTON_FONT_NAME @"Helevetica"

如果你还没有这样做,那么你将不得不全部替换它们。

答案 3 :(得分:0)

可能的选择是使用子类,然后编辑init。

//MYButton.m
-(id) initWithTitle: (NSString *)title {
    self.titleLabel = title;
    self.titleLabel.font = [UIFont fontWithName: FONT_NAME size FONT_SIZE];
}

然后只需改造所有UIButtons MYButtons。

答案 4 :(得分:0)

UIButton *NameBtn=[UIButton buttonWithType:UIButtonTypeCustom];
    NameBtn=[[UIButton alloc]init];
    [NameBtn setBackgroundColor:[UIColor clearColor]];
    [NameBtn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
    NSString *textb=[[self.searchList objectAtIndex:indexPath.row] objectForKey:@"name"];
    CGSize constraintb = CGSizeMake(310 ,10);
    CGSize sizeb = [textb sizeWithFont:[UIFont systemFontOfSize:15] constrainedToSize:constraintb lineBreakMode:UILineBreakModeWordWrap];
    [NameBtn setTitle:textb forState:UIControlStateNormal];
    NameBtn.font = [UIFont fontWithName:@"Helvetica-Bold" size: 12.0];
    NameBtn.frame = CGRectMake(85, 12, MAX(sizeb.width ,3.0f),12);
    [NameBtn addTarget:self action:@selector(buttonClicked:)  forControlEvents:UIControlEventTouchUpInside];
    NameBtn.tag=indexPath.row;

    [cell addSubview:NameBtn];

答案 5 :(得分:0)

这对我有用: [self.btnTopics.titleLabel setFont:[UIFont fontWithName:@“System”size:12]];