4

我已经针对类似的问题进行了梳理,其中大多数似乎告诉我我可能忘记将字体添加到复制资源构建阶段。我还确保这两种字体都是构建目标的一部分。

我已经检查了两次,三次检查。两种字体都处于复制资源阶段,并且都在 plist 中列出。

列表

在我的应用程序委托中,我检查了哪些字体可用于它们各自的字体系列,我得到了意想不到的结果

NSLog(@"%@", [UIFont fontNamesForFamilyName:@"DS-Digital"]);
NSLog(@"%@", [UIFont fontNamesForFamilyName:@"Proxima Nova"]);

第一个打印出我想要的“(“DS-Digital-Italic”)”,第二个打印出“(“ProximaNova-Regular”)”,也是预期的。

当我如下使用任何一种字体时,它只出现在模拟器中,但在任何设备上它默认回到系统字体。

[_estimateLabel setFont:[UIFont fontWithName:@"DS-Digital-Italic" size:50]];

或者

[cell.mainLabel setFont:[UIFont fontWithName:@"ProximaNova-Regular" size:20]];

有什么我想念的吗?我将 XCode 5 与 iPad mini 和 iPhone 5C 一起使用,两者都是 iOs 7。

4

4 回答 4

17

在 Fontbook 中打开字体(它随您的 mac 提供)。确保您使用后置脚本名称来调用它,如下所示: 在此处输入图像描述

它被称为@"HelveticaNeueCE-Thin"

还要确保在“添加到目标:”中检查了字体名称,当您将它们添加到项目时,如果您没有这样做,它们将不会被复制到发送到您的 iDevice 的应用程序包中。

于 2013-09-25T18:50:11.580 回答
0

在您的 AppDelegate 中运行此命令以查看在设备上运行时是否出现字体系列和名称:

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

如果确实出现了字体系列和名称并且拼写正确,那么字体文件可能存在问题......?查看设备日志(或控制台)以查看使用该文件是否有任何错误。

字体是否有可能在代码中的其他地方甚至从界面生成器中被覆盖?你在哪里设置字体?

于 2013-09-25T19:52:30.607 回答
0

你确定你的字体名称拼写正确吗?请参阅这篇文章我可以在 iPhone 应用程序中嵌入自定义字体吗?以供参考

于 2013-09-25T18:42:04.850 回答
0

我以编程方式编写,所以我不知道在 XCode 中是否有更简单的方法,我什至不在 Mac 上开发,但我加载自定义字体,如下所示:

// Load font
CGDataProviderRef fontDataProvider = CGDataProviderCreateWithURL((__bridge CFURLRef)[NSURL fileURLWithPath:@"/path/to/font.ttf"]);
CGFontRef uiFont = CGFontCreateWithDataProvider(fontDataProvider);
NSString * uiFontName = (__bridge NSString *)CGFontCopyPostScriptName(uiFont);
CGDataProviderRelease(fontDataProvider);
CFErrorRef error;
CTFontManagerRegisterGraphicsFont(uiFont, &error);
CGFontRelease(uiFont);
UIFont *yourfont = [UIFont fontWithName:uiFontName size:20.0f];

我猜 XCode 有办法为你做这件事,但如果你只想要一段有效的代码,这总是一个选择

于 2013-09-25T18:51:42.213 回答