iOS自定义字体不会显示在设备上

时间:2013-09-25 18:32:37

标签: ios objective-c fonts

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

我加倍了,三重检查了。这两种字体都处于复制资源阶段,两者都列在plist中。

plist

在我的app委托中,我检查了我们可用于各自字体系列的字体,并且我得到了意想不到的结果

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 个答案:

答案 0 :(得分:17)

打开Fontbook中的字体(它附带你的mac)。确保通过后脚本名称调用它,如下所示: enter image description here

@"HelveticaNeueCE-Thin"

调用

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

答案 1 :(得分:0)

您确定拼写的字体名称是否正确? 请参阅此帖子Can I embed a custom font in an iPhone application?以供参考

答案 2 :(得分: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有办法为你做这件事,但如果你只想要一段可行的代码,这总是一个选择

答案 3 :(得分:0)

在AppDelegate中运行此功能,以查看在设备上运行时是否显示字体系列和名称:

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

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

是否可以在代码中的其他位置或甚至从界面构建器中覆盖字体?你在哪里设置字体?