8

据我了解,所有标准控件默认使用系统字体。

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

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

4

2 回答 2

10

答案是否定的,你不能改变苹果的systemFont,你需要自己在你的控件上设置字体。

要为整个 iOS 应用程序设置默认字体的最佳方法,请检查以下 SO 问题:

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

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

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

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

于 2013-08-12T22:17:42.880 回答
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

从 iOS 7 开始,Light 变体是一个有用的附加功能。享受吧!;)

于 2014-09-16T11:11:40.413 回答