如何为整个应用程序设置自定义字体?

Shi*_*edi 9 iphone objective-c uiview custom-font ios

有没有办法如何将全局字体[新自定义字体]应用于iphone objective-c中的整个应用程序.

我知道我们可以使用以下方法为每个标签设置字体

[self.titleLabel setFont:[UIFont fontWithName:@"FONOT_NAME" size:FONT_SIZE]];
Run Code Online (Sandbox Code Playgroud)

但我想改变整个应用程序.如果有人知道,请帮助我.

Mar*_*rov 5

显然,要完全更改所有UILabel,您需要在UILabel上设置一个类别并更改默认字体.所以这里有一个解决方案:

创建一个CustomFontLabel.h文件

@interface UILabel(changeFont)
- (void)awakeFromNib;
-(id)initWithFrame:(CGRect)frame;
@end
Run Code Online (Sandbox Code Playgroud)

创建一个CustomFontLabel.m文件

@implementation UILabel(changeFont)
- (void)awakeFromNib
{
    [super awakeFromNib];
    [self setFont:[UIFont fontWithName:@"Zapfino" size:12.0]];
}

-(id)initWithFrame:(CGRect)frame
{
    id result = [super initWithFrame:frame];
    if (result) {
        [self setFont:[UIFont fontWithName:@"Zapfino" size:12.0]];
    }
    return result;
}
@end
Run Code Online (Sandbox Code Playgroud)

现在......在任何视图控制器中,您需要这些自定义字体标签,只需在顶部包含:

#import "CustomFontLabel.h"
Run Code Online (Sandbox Code Playgroud)

这就是全部 - 祝你好运

  • 这是一个等待发生的痛苦世界.您正在替换`awakeFromNib`和`initWithFrame`的标准实现,现在如果Apple在那里添加了一些重要的代码呢? (11认同)
  • 我也有了一个主意.因为你的方法太长了.我刚创建了这样一个类别.在我的app委托@implementation UILabel(labelFont) - (void)awakeFromNib {[super awakeFromNib]; self.font = [UIFont fontWithName:@"Bauhaus Md BT"尺寸:self.font.pointSize]; } (4认同)