OStack程序员社区-中国程序员成长平台

标题: ios - 如何仅在数组中加载自定义字体名称? [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 17:07
标题: ios - 如何仅在数组中加载自定义字体名称?

我在我的应用程序中使用了多种自定义字体。我知道如何添加自定义字体,但是所有这个过程的可怕部分是我们要使用自定义字体,因为大多数自定义字体名称与文件不同我们在应用程序中使用。在这里我想解释一下我最近做的例子,首先我在我的应用程序中添加了两个自定义字体文件 enter image description here

为了获得上述自定义字体名称,我尝试了这种方式

NSArray *familyNames = [[NSArray alloc] initWithArray:[UIFont familyNames]];

NSArray *fontNames;
NSInteger indFamily, indFont;
 FontnameArray=[[NSMutableArray alloc] init];
for (indFamily=0; indFamily<[familyNames count]; ++indFamily)
{
   fontNames = [[NSArray alloc] initWithArray:
                 [UIFont fontNamesForFamilyName:
                  [familyNames objectAtIndex:indFamily]]];
    for (indFont=0; indFont<[fontNames count]; ++indFont)
    {
        NSString *fullName = [NSString stringWithFormat"%@",[fontNames objectAtIndex:indFont]];
        [FontnameArray addObject:fullName];
        }
    }
[FontnameArray sortUsingSelectorselector(localizedCaseInsensitiveCompare];
NSLog(@"    Font name: %@", FontnameArray);

上面的代码为我显示了 199 个字体名称,所以我很难在 199 个字体中选择自定义字体名称,为了澄清我的疑问,我只需将字体文件拖到字体册然后我得到了自定义字体的原始名称。

[UIFont fontWithName"Ethiopia Primary" size:20]];
[UIFont fontWithName"Ethiopia jiret" size:20]];

所以问题是我如何才能像上面那样在数组中获取所有自定义字体名称,而不是将每个字体文件拖到 Fontbook 以获取原始名称。



Best Answer-推荐答案


只需与 iOS 中存在的所有字体进行比较

*创建新项目,如 this code并将所有字体名称的数组写入 plist 文件

- (void)writeAlliOSFontsToPlist{
    NSArray *fontFamilies = [UIFont familyNames];
    [self savePlist"AllFont" fromArray:fontFamilies];
}

- (NSString *) getFilePathForPlistNSString *) plistName {
    // placeholder
    NSArray *pathArray = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    return [[pathArray objectAtIndex:0] stringByAppendingPathComponent:[NSString stringWithFormat"%@.plist",plistName]];
}

-(void) savePlistNSString *)plistName fromArrayNSArray *)array {
    [array writeToFile:[self getFilePathForPlist:plistName] atomically:YES];
}

打开你的模拟器目录并复制this plist到您的应用程序包。 然后将此 plist 读入一个数组,并通过 this code 与所有字体进行比较

-(void)dumpCustomFonts{
    NSArray *iOSFontsArray = [NSArray arrayWithContentsOfFile:
                              [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:
                               @"AllFont.plist"]];
    NSMutableArray *fontFamilies = (NSMutableArray *)[UIFont familyNames];
    [fontFamilies removeObjectsInArray:iOSFontsArray];
    NSLog(@"%@",fontFamilies);
}

我的测试项目都做完了,你复制粘贴就好了。

关于ios - 如何仅在数组中加载自定义字体名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20465507/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4