在IB中设置时,自定义内置字体显示正确,但在以编程方式设置时则不能

时间:2014-10-22 20:48:51

标签: ios xcode

我有一个自定义生成的字体,我已添加到Xcode项目中。我已经按照添加字体的所有指示步骤进行操作,当我在IB中设置UILabel或UITextField作为自定义字体时效果很好,但是当我在运行时设置自定义字体时,它显示为iOS默认字体。我已经检查了UIAppFonts列表并用NSLog打印出来,显示全名,所以我知道当我调用[UIFont fontWithName:@"字体名称" size:s]它是正确的名称。可能是什么问题?

下面的字体名称查找方法(此方法提供了在自定义UIFont实例化中使用的错误名称):

NSDictionary* infoDict = [[NSBundle mainBundle] infoDictionary];
NSArray* fontFiles = [infoDict objectForKey:@"UIAppFonts"];

for (NSString *fontFile in fontFiles) {
    NSURL *url = [[NSBundle mainBundle] URLForResource:fontFile withExtension:NULL];
    NSData *fontData = [NSData dataWithContentsOfURL:url];
    CGDataProviderRef fontDataProvider = CGDataProviderCreateWithCFData((__bridge CFDataRef)fontData);
    CGFontRef loadedFont = CGFontCreateWithDataProvider(fontDataProvider);
    NSString *fullName = CFBridgingRelease(CGFontCopyFullName(loadedFont));
    CGFontRelease(loadedFont);
    CGDataProviderRelease(fontDataProvider);
    NSLog(@"FULL NAME:%@",fullName);
}

1 个答案:

答案 0 :(得分:1)

尝试执行此代码:

for (NSString* family in [UIFont familyNames]) {
    NSLog(@"%@", family);

    for (NSString* name in [UIFont fontNamesForFamilyName: family]) {
        NSLog(@"  %@", name);
    }
}

您是否看到了您尝试使用的字体名称?