我已经针对类似的问题梳理了SO,并且大多数人似乎告诉我,我可能忘记将字体添加到复制资源构建阶段。我还确保两种字体都是构建目标的一部分。
我加倍了,三重检查了。这两种字体都处于复制资源阶段,两者都列在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。
答案 0 :(得分:17)
打开Fontbook中的字体(它附带你的mac)。确保通过后脚本名称调用它,如下所示:
由@"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);
}
}
如果出现字体系列和名称且拼写准确,那么字体文件可能存在问题......?查看设备日志(或控制台)以查看使用该文件是否有任何错误。
是否可以在代码中的其他位置或甚至从界面构建器中覆盖字体?你在哪里设置字体?