WatchKit WKInterfaceLabel不能更改字体。

7

我尝试更改标签字体。但是无论我在属性检查器中设置的字体,都与系统字体不同-没有任何变化-既不会在模拟器上,也不会在故事板上。我甚至尝试使用属性字符串以编程方式设置字体-相同的系统字体出现。感谢您的帮助。


你正在使用最新的测试版吗(Xcode 6.2 beta 4)?自从上次更新以来,WKInterfaceLabel -setHidden: 似乎有问题。我没有在我的实验应用程序中更改字体,但是可能会有更多 WKInterfaceLabel 的问题。 - miho
是的,我正在使用最新的Xcode 6.2 beta 4版本。我希望能找到解决方案,否则我只能等待下一个beta 5版本了。 - Stefo
点击这里查看答案 - Yano
1个回答

16

目前在WatchKit中无法使用iOS自带的字体,唯一可用的是系统字体(San Francisco)。 来源:苹果开发者论坛

但您可以通过将字体文件添加到项目来使用自定义字体:

  1. 将字体文件拖入项目导航器中。

    font in project navigator

  2. 在您的WatchKit应用程序和WatchKit扩展包中均包含自定义字体文件。

    add both targets

  3. 在您的WatchKit应用程序WatchKit扩展程序Info.plist文件中均添加应用程序提供的字体(UIAppFonts)键。

    font key in plist

  4. 添加此代码到awakeWithContext以确保您知道稍后在您的代码中调用的正确字体名称:

    print("Custom font names:")
    print(UIFont.fontNames(forFamilyName: "Exo"))
    print(UIFont.fontNames(forFamilyName: "Tabardo")) 
    
  5. 运行应用程序并注意打印到调试控制台的字体名称。一旦您知道正确的名称,您就可以在WatchKit扩展中的某个位置添加此代码:

  6. var fontSize = CGFloat(32)
    var text = "so cool"
    var cstmFont = UIFont(name: "Tabardo", size: fontSize)!
    var attrStr = NSAttributedString(string: text, attributes:
      [NSFontAttributeName: cstmFont])
    firstLabel.setAttributedText(attrStr)
    
    fontSize = CGFloat(36)
    text = "right on!"
    cstmFont = UIFont(name: "Exo-Regular", size: fontSize)!
    attrStr = NSAttributedString(string: text, attributes: 
      [NSFontAttributeName: cstmFont])
    secondLabel.setAttributedText(attrStr)
    
  7. 享受手表上的自定义字体吧!

    带有自定义字体的手表界面

请记住,快速浏览和通知无法使用自定义字体。如果您想在那里使用自定义字体,您将需要使用一个渲染后的图片。然而,由于快速浏览和通知应该加载得很快,所以当它被调用时,您需要准备好该图片。


@Underdog用图片编辑了答案。让我知道进展如何! - Ben Morrow
当您单击字体时,只需简单地勾选“目标成员资格”框即可。无需专门添加文件夹以供watchOS观看。 - SwiftiSwift

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