有没有办法更改您的应用程序的默认字体

Vic*_*nin 8 fonts ios

据我所知,所有标准控件默认使用系统字体.

此外,API [UIFont systemFontOfSize:]也使用系统字体.

有没有办法为整个应用程序重新定义它,而不是为表格,标签等设置字体?

nul*_*ull 9

答案是否定的,你无法改变苹果的系统,你需要自己设置控件上的字体.

有关为整个iOS应用设置默认字体的最佳方法,请查看以下SO问题:

为整个iOS应用设置默认字体?

如何在不指定大小的情况下为整个iOS应用设置自定义字体

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

有没有一种简单的方法来为整个应用程序设置默认字体?


Mic*_*chi 5

定义和导出(通过在文件或预编译头中包含标头)类别UIFont如下:

@implementation UIFont (Utils)

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wobjc-protocol-method-implementation"

+ (UIFont *)systemFontOfSize:(CGFloat)size
{
    return [UIFont fontWithName:@"YOUR_TRUETYPE_FONT_NAME_HERE" size:size];
}

+ (UIFont *)lightSystemFontOfSize:(CGFloat)size
{
    return [UIFont fontWithName:@"YOUR_TRUETYPE_FONT_NAME_HERE" size:size];
}

+ (UIFont *)boldSystemFontOfSize:(CGFloat)size
{
    return [UIFont fontWithName:@"YOUR_TRUETYPE_FONT_NAME_HERE" size:size];
}

+ (UIFont *)preferredFontForTextStyle:(NSString *)style
{
    if ([style isEqualToString:UIFontTextStyleBody])
        return [UIFont systemFontOfSize:17];
    if ([style isEqualToString:UIFontTextStyleHeadline])
        return [UIFont boldSystemFontOfSize:17];
    if ([style isEqualToString:UIFontTextStyleSubheadline])
        return [UIFont systemFontOfSize:15];
    if ([style isEqualToString:UIFontTextStyleFootnote])
        return [UIFont systemFontOfSize:13];
    if ([style isEqualToString:UIFontTextStyleCaption1])
        return [UIFont systemFontOfSize:12];
    if ([style isEqualToString:UIFontTextStyleCaption2])
        return [UIFont systemFontOfSize:11];
    return [UIFont systemFontOfSize:17];
}

#pragma clang diagnostic pop

@end
Run Code Online (Sandbox Code Playgroud)

从iOS 7开始,Light变体是一个有用的额外功能.享受!;)

  • 好吧,它在UIKit中重载了这些方法的标准实现,这不是完全推荐的; fe iOS 9附带了旧金山_Display_和_Text_变体之间的系统字体自适应切换,具体取决于请求的字体大小.我仍然发现这种技术**安全**,除非你正在编写一个印刷应用程序或需要一些字体附加功能,这是一种非常容易和快速的方式来以一种非常确定的方式切换默认的应用程序字体. (2认同)