iOS版。字体在模拟器上可用但在设备上没有

时间:2013-07-03 12:25:02

标签: ios objective-c uifont

我在我的应用程序中使用自定义字体并遇到了非常奇怪的问题。该字体在模拟器上可用,但在实际的iPad上不可用。

1我不会混淆字体名称和文件名。文件名是bitdust2.ttf,而字体名称是BitDustTwo,这就是我调用它的方式,在模拟器上它是可以的。

2这不是区分大小写的问题。该字体在设备上确实不可用。当我这样做时,我知道原因:

NSLog(@"%@", [UIFont familyNames]);

我在模拟器上看到我的字体包含在familyNames数组中,但在iPad上丢失了。怎么了?你遇到过这样的问题吗?

5 个答案:

答案 0 :(得分:4)

(来自上述评论:) 确认已将字体文件“bitdust2.ttf”添加到目标并复制到应用程序包中。

答案 1 :(得分:2)

模拟器的标题是模拟器,而不是真正的模拟器。模拟器运行相同的命名API,但由于模拟器在OS X而不是iOS上运行,因此模拟器通常具有更多功能。例如,模拟器上的媒体播放器类支持比设备上更多类型的文件(编解码器),因为OS X支持比iOS更多的编解码器。在模拟器上,您可以获得比设备更多的字体。

以下是有关embedding fonts in an iOS app的详细信息:

  

在iOS 4中有一种使用自定义字体的简单方法。

     
      
  1. 将您的字体文件(例如,Chalkduster.ttf)添加到XCode中项目的Resources文件夹中。
  2.   
  3. 打开info.plist并添加一个名为UIAppFonts的新密钥。此键的类型应为数组。
  4.   
  5. 将自定义字体名称添加到此数组,包括扩展名(Chalkduster.ttf)。
  6.   
  7. 现在您可以在应用程序中使用[UIFont fontWithName:@“Chalkduster”size:16]。
  8.   

重要的是不要错过任何步骤。如果您仍然遇到问题,请转到XCode项目的Build Phases选项卡,然后在Copy Bundle Resources选项卡下,确保包含您的字体文件。如果没有,请添加它。

答案 2 :(得分:0)

检查您的设备操作系统版本以及对iOs版本的支持。您使用的自定义字体必须与设备的iOS兼容。

检查this的答案。如果不支持,可能需要备用自定义字体。

答案 3 :(得分:0)

我刚刚遇到同样的问题并且在验证一切正确之后:

  • 字体被添加到info.plist中的正确密钥“应用程序提供的字体”
  • 将字体添加到项目中 - >信息与info.plist相同的密钥(这只是意味着我保存了plist)
  • 字体文件已添加到项目中
  • 字体文件位于项目文件夹
  • 项目 - >目标 - >构建阶段 - >复制包资源:包含我的字体文件
  • 检查文件是否与目标
  • 相关联

我不得不再次下载文件并重新添加..当我更改文件名时...所以我认为.ttf文件已损坏

答案 4 :(得分:-1)

您需要将字体嵌入到应用中;说明是here