• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 如何仅在数组中加载自定义字体名称?

[复制链接]
菜鸟教程小白 发表于 2022-12-12 17:07:05 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

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

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap