WatchKit WKInterfaceLabel无法更改字体

时间:2015-01-26 09:00:33

标签: ios fonts watchkit

我正在尝试更改标签字体。但是我在Attributes Inspector中设置的每种字体都不同于系统字体 - 不要改变任何东西 - 既不是模拟器也不是故事板。我甚至尝试使用Attributed字符串以编程方式设置字体 - 显示相同的System字体。谢谢你的帮助。

1 个答案:

答案 0 :(得分:13)

目前,您无法在WatchKit中使用随附的iOS字体。唯一可用的是System(旧金山)。 Source: Apple Developer Forums

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

  1. 将字体文件拖到项目导航器

    font in project navigator

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

    add both targets

  3. 将应用程序提供的字体(UIAppFonts)键添加到两者 WatchKit应用 WatchKit扩展程序< / strong> Info.plist 文件

    font key in plist

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

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

    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)
    
  6. 享受手表上的自定义字体!

    watch interface with custom fonts

  7. 请注意,扫视和通知无法使用自定义字体。如果你想在那里使用一个,你将不得不使用渲染图像。但是,由于扫视和通知应该快速加载,因此您希望在调用该图像时准备就绪。