更改控件使用的默认systemFont

xap*_*ock 2 objective-c system-font uifont

我有一个很大的应用程序,需要更改字体,但我不想触摸每个标签,文本字段等.如何访问IB中使用的"systemFont" [UIFont systemFontOfSize:x]

我已经尝试过这个:iOS 5:对UIAppearance感到好奇,但这不是解决方案,因为我在我的应用程序中有不同的FontSizes和Bold/Regular,我无法整体设置它.

我可以通过UIApplication或InfoPlist中的某个位置进行设置吗?

Par*_*ram 5

您可以为UILabel,UITextField和UIButton创建Category,并且可以在"awakeFromNib"方法中将字体名称更改为新字体,并且可以保持相同的大小.我在下面为UILabel类添加了代码.你可以为UITextField和UIButton做同样的事情.

@implementation UILabel (CustomFontLabel)

-(void)awakeFromNib{
    [super awakeFromNib];
    float size = [self.font pointSize];
    NSString *stringfontstyle=self.font.fontName;
    if([stringfontstyle rangeOfString:@"Bold"].location != NSNotFound) {
        self.font = [UIFont fontWithName:@"MyCustomFont-Bold" size:size];
    }
    else if ([stringfontstyle rangeOfString:@"Italic"].location != NSNotFound) {
        self.font = [UIFont fontWithName:@"MyCustomFont-Italic" size:size];
    }
    else if ([stringfontstyle rangeOfString:@"Medium"].location != NSNotFound) {
        self.font = [UIFont fontWithName:@"MyCustomFont-Medium" size:size];
    }
    else {
        self.font = [UIFont fontWithName:@"MyCustomFont" size:size];
    }
}

@end
Run Code Online (Sandbox Code Playgroud)