Как изменить все шрифты UIButton на пользовательский шрифт? - PullRequest
4 голосов
/ 13 июля 2011

Есть ли способ сделать это?Я хочу, чтобы у меня был нестандартный шрифт, который я бы показывал на UIButton.

Ответы [ 6 ]

7 голосов
/ 13 июля 2011

Если вы используете IBOutletCollection, то это должно быть прямым.

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

Подключите кнопки к этой коллекции розеток и затем измените шрифт за один раз, используя,

[self setValue:[UIFont fontWithName:@"Helvetica" size:30] forKeyPath:@"buttons.font"];
5 голосов
/ 13 июля 2011

Один из способов сделать это - создать подкласс 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 по умолчанию.

3 голосов
/ 13 июля 2011

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"

Если у вас естьне делайте этого, тогда вам придется заменить их всех.

0 голосов
/ 11 октября 2013

Это сработало для меня: [self.btnTopics.titleLabel setFont: [UIFont fontWithName: @ "System" size: 12]];

0 голосов
/ 09 ноября 2012
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];
0 голосов
/ 13 июля 2011

Возможный вариант - использовать подкласс, затем отредактировать init.

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

Затем просто сделайте все ваши кнопки UIButtons MYButtons.

...