ios - 如何获取我的 iOS 应用程序中捆绑的字体名称?

标签 ios

<分区>

我在我的 iOS 应用程序中添加了一些来自 Xcode app-info.plist 的自定义 True Type 字体(使用键“应用程序提供的字体”)。

iOS 自动将它们识别为应用程序中的可用字体,我可以使用 [UIFont familyNames] 获取所有字体系列的名称,包括 iOS 提供的系统字体。

但我想知道哪些字体来自 iOS 系统字体,哪些字体来 self 在包中添加的自定义字体。

是否有任何编程方法可以区分捆绑字体和系统字体,或者只是一种获取所有捆绑字体名称的方法?

最佳答案

这是公然抄袭自 another answer 它应该为您提供捆绑字体中的所有字体名称。

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

for (NSString *fontFile in fontFiles) {
    NSLog(@"file name: %@", fontFile);
    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(@"font name: %@", fullName);
}

这个答案会给你正确的字体名称,但如果你只是想从信息 plist 中获取字体名称:

NSDictionary* infoDict = [[NSBundle mainBundle] infoDictionary];
NSArray *arrayOfFontStringNames = infoDict[@"UIAppFonts"];

关于ios - 如何获取我的 iOS 应用程序中捆绑的字体名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18554554/

相关文章:

ios 键盘未显示在设置中

ios - 在 uitableview 部分组织日期

ios - 通过 Xcode 关闭模拟用户位置

ios - 如何在 MKMapView 的 MKAnnotation 上设置图像

ios - 在运行时调整 UITableViewCell 内部 UIView 的宽度

ios - HKHealthStore.isHealthDataAvailable 的目的是什么?

ios - 在设备上运行应用程序时 EXC_BAD_ACCESS

ios - 如何使用 slider 更改 UICollectionViewCell 的框架?

ios - 在 coredata 中存储 Facebook 好友列表?

ios - WKWebView将pdf保存到ibooks,从链接保存pdf