WatchKit WKInterfaceLabel не может изменить шрифт

Я пытаюсь изменить шрифт метки. Но каждый шрифт, который я установил в Инспекторе атрибутов, отличается от системного шрифта — ничего не меняйте — ни симулятора, ни раскадровки. Пробовал даже установить шрифт программно с Attributed string - появляется тот же системный шрифт. Спасибо за вашу помощь.


person Stefo    schedule 26.01.2015    source источник
comment
Вы используете самую последнюю бета-версию (Xcode 6.2 beta 4)? WKInterfaceLabel -setHidden: кажется сломанным с момента последнего обновления. Я не меняю шрифт в своем экспериментальном приложении, но в WKInterfaceLabel может быть больше ошибок.   -  person miho    schedule 26.01.2015
comment
Да, у меня последняя бета-версия 4 Xcode 6.2. Я надеюсь, что у меня есть решение, или все, что я могу сделать, это дождаться следующей бета-версии 5.   -  person Stefo    schedule 26.01.2015
comment
Нажмите [здесь, чтобы увидеть ответ] [1] [1]: stackoverflow.com/questions/28360525/   -  person Yano    schedule 06.02.2015


Ответы (1)


В настоящее время вы не можете использовать включенные шрифты iOS в WatchKit. Единственный доступный — System (Сан-Франциско). Источник: форумы разработчиков Apple

Однако вы можете использовать собственный шрифт, добавив файл шрифта в проект:

  1. Перетащите файлы шрифтов в навигатор проекта.

    шрифт в навигаторе проекта

  2. Включите файл пользовательского шрифта как в приложение WatchKit, так и в пакет расширений WatchKit.

    добавить обе цели

  3. Добавьте ключ Шрифты, предоставляемые приложением (UIAppFonts) в как ваше приложение WatchKit, так и в ваше расширение WatchKit файлы Info.plist

    Ключ шрифта в plist

  4. Добавьте этот код в awakeWithContext, чтобы убедиться, что вы знаете правильное имя шрифта для последующего вызова в коде:

    print("Custom font names:")
    print(UIFont.fontNames(forFamilyName: "Exo"))
    print(UIFont.fontNames(forFamilyName: "Tabardo")) 
    
  5. Запустите приложение и обратите внимание на имена шрифтов, напечатанные в консоли отладки. Как только вы узнаете правильное имя, вы можете добавить этот код где-нибудь в своем расширении WatchKit:

    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. Наслаждайтесь пользовательскими шрифтами на часах!

    смотреть интерфейс с пользовательскими шрифтами

Имейте в виду, что для превью и уведомлений нельзя использовать пользовательские шрифты. Если вы хотите использовать его там, вам придется использовать отрендеренное изображение. Однако, поскольку взгляды и уведомления должны загружаться быстро, вы хотите, чтобы это изображение было готово к работе, когда оно будет вызвано.

person Ben Morrow    schedule 03.02.2015
comment
@Underdog отредактировал ответ с картинками. Дайте мне знать, как это происходит! - person Ben Morrow; 27.07.2015
comment
Просто отметьте поле Target Membership при выборе шрифта. Не нужно добавлять папки специально для watchOS - person SwiftiSwift; 17.03.2021