如何在iOS中区分自定义和“内置”字体?

时间:2016-06-23 20:17:19

标签: ios fonts info.plist

我在iOS项目中添加了几个Google Fonts ttf文件作为自定义字体。一切正常,我可以使用这些字体。但是,我需要区分自定义字体和iOS自动提供的字体。

我尝试将UIFont.FontNamesForFamilyName返回的文件名与Info.plist文件中的字体文件名进行比较。虽然它适用于大多数字体,但文件名并不总是与字体名称匹配;有些人可能会有下划线或短划线。由于我不能完全依赖文件名,我还有其他选择吗?

1 个答案:

答案 0 :(得分:0)

这是一个挑战,它不是直截了当但绝对可行。

您需要知道哪个“字体名称”是开箱即用的,哪个不是。

为了发现这就是我要做的。创建一个虚拟的全新示例项目。在AppDelegate.m文件中添加此

// Get All fonts
NSArray *fontFamilies = [UIFont familyNames];

for (int i=0; i<[fontFamilies count]; i++)
{
    NSLog(@"Font: %@ ...", [fontFamilies objectAtIndex:i]);
}

这将为您提供默认iOS安装的所有字体的名称。您可以将该信息存储在doc dir中的plist文件中。

现在在自定义项目中运行相同的命令。它会给你你的iOS和...你自己的自定义字体。再次将该信息存储在doc dir中的另一个plist文件中。

现在你需要做的是将这两个plist文件放在一个项目中,将每个文件读入一个数组并比较数组。这将为您提供已添加的字体以及哪些字体是开箱即用的。