引用文件夹中的iOS自定义字体

时间:2013-08-09 09:16:41

标签: ios cocoa-touch fonts

我引用文件夹中的自定义字体不在字体系列中,因此无法使用。当我使用普通组而不是引用文件夹时,一切都很完美。我的Info.plist是正确的,我在构建阶段拥有正确的拷贝包资源(引用的文件夹在那里而不是其中的每个文件)。我还在[UIFont fontWithName]中使用了正确的PostScript名称,但它只返回nil

当我检查我的主捆绑包时,模拟器/设备中有字体文件,我可以毫无问题地阅读它。唯一的问题是UIFont没有看到它。当我列出字体系列时,我的自定义字体不存在。

仅当我在引用的文件夹或自定义捆绑包(也是引用的文件夹)中有自定义字体时,才会出现此问题。当我将字体放在普通组中时,一切正常。我尝试清理项目,卸载应用程序并重置iphone模拟器。当我从Xcode 4.6和Appcode 2.1构建时,会发生同样的问题。我正在构建iOS 6.1 SDK。

我详细介绍了在iOS中使用自定义字体的所有提示和技巧,唯一的区别是引用的文件夹。我希望我的资源在引用的文件夹(或自定义包)中,因为我在其他程序中创建资源(着色器/纹理/ ...),我只是想将它们复制到文件夹而不是逐个添加它们xcode中。

我的方法有什么问题?或者这是构建系统的已知错误/限制?

2 个答案:

答案 0 :(得分:3)

我在解决另一个问题时解决了这个问题(缺少图标,将它们移动到引用的文件夹/自定义包中)。

此问题的解决方案是使用plist文件中自定义字体的整个路径(项目目录中的整个相对路径)。就我而言,它看起来像这样:

<key>UIAppFonts</key>
<array>
    <string>mybundle.bundle/fonts/OpenSans-Regular.ttf</string>
    <string>mybundle.bundle/fonts/OpenSans-Light.ttf</string>
</array>

当使用Xcode的plist“图形”表示时,只需输入带有文件名的整个路径。

使用引用文件夹/自定义捆绑包中的其他资源时,例如按钮图标的图像并在代码中设置它们,也使用整个路径,而不仅仅是图像的名称,例如。

[UIImage imageNamed:@"mybundle.bundle/images/cancel.png"]

而不仅仅是

[UIImage imageNamed:@"cancel.png"]

答案 1 :(得分:0)

这是Xcode的限制。不久前我也有同样的问题。我希望最终XCode能够提供一个打包或收集选项,以漂亮的文件夹重新打包您的代码,就像可可豆荚一样,但是现在我们被卡住了。