自定义字体在模拟器上能显示,但在设备上不能显示

12

我一直在尝试使用自定义字体在iOS上进行开发,除了一个问题之外(即自定义字体无法在我的设备上显示),其他都已经解决。

  1. 我将自定义字体添加到项目文件的根目录下。
  2. 将其添加到info.plist文件中的"Fonts provided by application"数组中。
  3. 检查原始文件和我添加到info.plist文件中的文件大小写是否相同。
  4. 使用[playMenuBtn.titleLabel setFont:[UIFont fontWithName:@"fontname" size:40]];使字体生效。

当我在模拟器中运行我的应用程序时,一切都正常,并且可以工作。然而,一旦我在物理设备上运行它,它就会显示默认字体和默认大小。

如果我使用:
UIFont *font = [UIFont fontWithName:@"VINCASTENCIL" size:20]; NSLog(@"Font:%@", font);

然后模拟器返回: 2012-04-07 01:10:41.544 AppName[47412:f803] Font:<UICFFont: 0x683e040> font-family: "VINCA STENCIL"; font-weight: normal; font-style: normal; font-size: 20px

而设备返回: 2012-04-07 00:42:56.358 AppName[5079:707] Font:(null)

我已经尝试了一切,包括尝试所有FontBook告诉我的字体可能被命名的名称。我知道这是免费的,没有许可证。

任何帮助都将不胜感激,因为它让我发疯了,我真的不想使用所有这些图片,因为本地化将成为一个痛苦的问题!


[UIFont familyNames] 列出了您添加的字体吗? - MrMage
字体文件有哪些扩展名?是TTF还是ttf? - NeverBe
@NeverBe 是的,我试过了。仍然没有成功。 :-( - Baza207
列出所有字体,就像在http://stackoverflow.com/questions/9750222/issues-with-custom-font-in-ios/9750315#9750315中那样。 - NeverBe
已经在下面发布了答案,现在一切都正常了。感谢大家的帮助。 - Baza207
显示剩余5条评论
2个回答

29

我刚刚成功解决了这个问题。我的操作都是正确的,但由于某种原因,它没有将我的字体文件添加到“Targets”-> “Build Phases”->“Copy Bundle Resources”中。通过手动将其添加到此列表中,该字体现在在设备上显示。

这已经是这个项目第二次未能自动添加文件到这里(之前用一个我添加的类也出现过这种情况),所以我认为这可能是我的项目有问题,或者是Xcode中的一个漏洞。

感谢大家的建议和帮助。 :-D


这有点像我说的D: - Allison
@TheDeveloper 是的,这就是我最后检查它的原因。谢谢! :-) - Baza207
似乎 Xcode 默认不像 PNG 文件那样将 TTF 文件添加到资源捆绑包中。我这里也遇到了同样的问题。 - Chris
我也遇到了同样的问题,但字体显示在“复制包资源”中。我添加了两种自定义字体。一种字体可以使用,但第二种字体无法使用...我不知道为什么。 - Omer Obaid
@OMerObaid 我发现双重检查名称也很有用。查看设备是否知道某个字体的最佳方法是通过循环 [UIFont familyNames][UIFont fontNamesForFamilyName:] 并记录字体名称。FontBook 也非常适合查看字体应该命名为什么。 - Baza207

0

是的,遵循上述所有指示,你应该没问题。还有一些需要注意的事项:大小写敏感性。在你的*.plist文件和Fonts provided by application中。模拟器可能会忽略大小写,但设备不会。例如,'Facebook'与'FaceBook'不同。(这导致字体在模拟器中工作,但在设备上却不行!)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接