我有一个Apple Watch应用程序使用Menlo Bold字体作为标签。
在第一个支持watchkit的Xcode版本中,我能够将故事板中的标签字体更改为Menlo Bold 36,一切正常。
在cnt版本(Xcode 6.2)中已经不可能了,所以我找到了关于如何在Apple Watch中设置自定义字体的教程,http://www.tech-recipes.com/rx/53710/how-do-i-use-custom-fonts-in-my-apple-watch-app/
我在本教程中找到了这段代码:
func printFonts() {
let fontFamilyNames = UIFont.familyNames()
for familyName in fontFamilyNames {
println("------------------------------")
println("Font Family Name = [\(familyName)]")
let names = UIFont.fontNamesForFamilyName(familyName as String)
println("Font Names = [\(names)]")
}
}
此代码打印可用字体 它用于查看为什么是您添加的字体的名称。
在这个阶段我还没有添加任何自定义字体,但我运行此功能只是为了查看默认情况下Apple Watch上可用的字体。
运行后我发现:
/* lot of fonts before */
------------------------------
Font Family Name = [Menlo]
Font Names = [[Menlo-BoldItalic, Menlo-Regular, Menlo-Bold, Menlo-Italic]]
------------------------------
/* lot of fonts after */
看起来我的Menlo-Bold在Apple Watch上可用,但我无法在StoryBoard中选择它。
所以,我觉得这很好,我不需要添加字体我会用它。
这是我的代码:
// must maee attributed text
let attributedTextForHour = NSAttributedString(
string: "IS IT WORKING",
attributes: NSDictionary(object: UIFont(name: "Menlo-Bold", size: 36)!, forKey:NSFontAttributeName))
// with atributex text
mylabel.setAttributedText(attributedTextForHour)
当我在模拟器中运行此代码时,标签的字体不会改变 还有一些其他奇怪的事情:
mylabel.setAttributedText(attributedTextForHour)
上设置断点并快速查看attributedTextForHour
时,它会以正确的字体显示。所以在调试器中它很好,但在模拟器上它不是。
那么如何解决这个问题?
我没有Apple Watch,所以我可以看到真实设备上发生了什么。
所以,我不知道我的代码中是否存在某些问题,或者这是Apple的错误形式。
如果某人可以在计算机上测试并报告结果,那么这也很有用。
也许整个问题是因为我没有从外面添加Menlo Bold字体而且我正在使用printFont()函数显示的内容。 所以如果有人知道我可以在哪里下载Menlo Bold字体,请提供链接,以便我也可以测试。
答案 0 :(得分:3)
我设法解决了这个问题,所以我要为后代发帖。
我从中学到了很少的东西(工作3小时后)
printFonts()
打印的字体,它们看起来像是可用的,但它们不是。如果要添加已在printFonts()
中打印的字体,事情会变得复杂。
您不能使用相同的名称添加它,因此您必须使用不同的名称添加它,我称之为Menlo-Bold-My.otf,您必须更改某些字体ID。 所以Menlo-Bold-My.otf与Apple的Menlo-Bold.otf相同。
为了转换,操作字体,我使用了程序http://fontforge.github.io/en-US/