在XCode 6中的Storyboard中使用自定义字体

3
我想在我的iOS 8 Swift项目中使用一个图标字体(目前只有一个图标)。我首先将字体添加到我的项目中(在文件列表中添加文件到“MyProject” - 然后将其添加到我的目标)。然后,我查找了字符的代码点,它是U+E600,并在storyboard中将U+E600插入为按钮的标题。立即成功 - 现在我的storyboard上的按钮有了一个漂亮的退格图标。
但是,当我在模拟器中运行我的应用程序时,它仅显示臭名昭著的问号方框图标。
然后,我向我的视图控制器添加了以下代码,以查看字体是否“真正添加”:
let fontFamilyNames = UIFont.familyNames()
for familyName in fontFamilyNames {
    println("Font Family Name = [\(familyName)]")
    let names = UIFont.fontNamesForFamilyName(familyName as! String)
    println("Font Names = [\(names)]")
}

毫无疑问,我的字体icomoon以同名字体系列的单一字体的形式出现。
我随后打开了Info.plist,考虑到我可能仍需手动添加字体文件,并将icomoon.ttf(文件名正确)添加为Fonts provided by application中的第一项和唯一项。再次运行应用程序。仍显示问号。在我的iPhone 6上运行该应用程序时,问题依然存在。
为了验证文件是否包含在捆绑包中,我打开了目标下Build Phases中的Copy bundle resourced,并验证了它是否在列表中。
XCode按钮的字体: enter image description here 在XCode storyboard中的外观: enter image description here 在模拟器中的外观: enter image description here 我现在不知如何继续。有很多指南,在更新程度方面各不相同,但我真的没有看到我错过了什么。我错过了什么吗?有没有办法调试此问题?

1
尝试使用IBOutlet在代码中获取对按钮的引用,并打印出其UIFont。如果字体不正确,则可能需要以编程方式设置它。我在Interface Builder中看不到您设置按钮和字体的明显问题。 - Andrew
打印出UIFont是一个很好的建议!原来字体是系统字体。在viewDidLoad中添加self.bsButton.titleLabel?.font = UIFont(name: "icomoon", size: 65)并不能解决问题,但如果之后调用相同的代码(通过在按钮的回调函数中实现测试),它就起作用了(!)。嗯… - beta
发布为答案。 - Andrew
1个回答

1
我建议在代码中获取一个指向按钮的@IBOutlet引用,并打印出它的UIFont。如果字体不正确,那么可能需要通过编程设置它:
yourLabel.font = UIFont(name: "icomoon", size: 20)

我认为您在界面构建器中设置按钮的方式没有问题,所以可能是字体名称方面的错误或技术细节问题。
我想到一个可能性是,通常的字体名称形式为 FontFamily-FontName (例如 HelveticaNeue-Regular ),而您的字体名称不是这样的。也许这就是问题所在。

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