当在IB中设置时,自定义构建的字体会正确显示,但当以编程方式设置时则不会



我有一个自定义构建的字体,已添加到Xcode项目中。我已经按照指示的所有步骤添加了字体,当我在IB中将UILabel或UITextField设置为自定义字体时,效果很好,但当我在运行时设置自定义字体时会显示为iOS默认字体。我已经检查了UIAppFonts列表,并用NSLog将其打印出来,NSLog显示全名,所以我知道当我调用[UIFont fontWithName:@"font name"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);
}

尝试执行以下代码:

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

你看到你试图使用的字体名称了吗?

最新更新