Пользовательский шрифт Xcode 8 не отображается в interface builder

Я пытаюсь использовать пользовательский шрифт (Bebas Neue) в моем приложении iOS. Я сделал следующие шаги:--3-->

  1. скопировать .файлы otf для проекта.
  2. подтвердить .файлы otf установили проект в качестве цели.
  3. добавил .otf файлы в "шрифты, предоставляемые приложением" в plist.
  4. на этапах сборки .файлы otf находятся в "Copy Bundle Resources".
  5. установить шрифт на Mac.
  6. попробуйте распечатать все доступные шрифты, но я не вижу свой шрифт.

код, который я использовал:

for name in UIFont.familyNames() {
  println(name)
  if let nameString = name as? String
  {
    println(UIFont.fontNamesForFamilyName(nameString))
  }
}
  1. попытка установить шрифт в коде, и это сработало.

код, который я использовал:

textLabel?.font = UIFont(name: "BebasNeueRegular", size: 14)
  1. но я не могу установить его в interface builder. Есть идеи?

скриншоты:

Font Font-List

8 ответов


Попробуйте Следующие Шаги: код протестирован в Swift 3.

Шаг 1: добавьте свой собственный шрифт в свой проект (убедитесь, что добавить в Target тикавший.)Я использую " PermanentMarker.ttf", " Pecita.ОТФ" и "AROLY.ttf " шрифт как тестовый шрифт.

Примечание: поддержка типа шрифта ttf и otf (оба типа шрифтов должны работать)

Шаг 2: изменить application-info.plist файл. Добавьте ключ " шрифты, предоставляемые приложением "в новую строку и добавьте" PermanentMarker.ttf "как новый элемент в массиве"шрифты, предусмотренные приложением".

код plist должно выглядеть так

enter image description here

теперь шрифт будет доступен в Interface Builder. Чтобы использовать пользовательский шрифт в коде мы должны обратиться к нему по имени, но имя часто не совпадает имя файла шрифта

теперь вы можете получить доступ к пользовательскому шрифту из viewController. Я тестирую шрифт, поместив UIlabel в раскадровку, как показано ниже.

обновление 2: Working Solution

после, импортировал пользовательский шрифт и обновил ваш plist.выберитеlabel из своего storyBoard,Гото Attributes Inspectorпод Label>Text type> выберите Attributed и выбрать custom font от список.

enter image description here

enter image description here

enter image description here

выход:

enter image description here

обновление 1

если ваш пользовательский шрифт все еще не указан в Xcode font list.проверьте ссылку на свой вопрос

Примечание: еще можно назначить BebasNeue или custom font программно к вашим ярлыку или кнопке etc. даже его не видно в вашем interface Builder.Если у вас возникли проблемы с настройкой шрифта для вашего объекта программно.попробуйте метод ниже.

назначить шрифт UILabel:

    label?.font = UIFont(name: "BebasNeue", size: 35) // Set to any size

назначить шрифт UIButton:

    button.titleLabel?.font = UIFont(name: "BebasNeue", size: 35)

назначить шрифт UITextField:

    textField.font = UIFont(name: "BebasNeue", size: 25) 

назначить шрифт UINavigationBar:

    navigationController?.navigationBar.titleTextAttributes = [NSFontAttributeName: UIFont(name: "BebasNeue", size: 25)!, NSForegroundColorAttributeName: UIColor.red]

назначить шрифт UIToolBar:

    UIBarButtonItem.appearance().setTitleTextAttributes([NSFontAttributeName: UIFont(name: "BebasNeue", size: 25.0)!], for: UIControlState.normal)

выход:

enter image description here


при использовании того же шрифта (Bebas Neue) я испытываю ту же проблему: шрифт не отображается в списке шрифтов для Plain управление.

для Attributed элементы управления, как описано в обновлении 2 в Joes post, но затем вы фактически меняете attributedText вместо обычного text, что может привести к нежелательным поведением. Например, вам придется возиться с NSMutableAttributedString чтобы изменить цвет текста или текста во время выполнения.

Я провел некоторое расследование этот вопрос. Я использовал FontLab Studio изменить шрифт и сделать некоторые тесты. Я использовал Bebas Neue версия 1.400 (от 15 сентября 2014 года) от dafont.com.

  • возможно, файл шрифта был каким-то образом поврежден. Повторно сохранено как .otf и .ttf:не работает.
  • возможно, метаданные шрифта были повреждены. Скопировал все глифы в новый шрифт и назвал это Bebas Neue:не работает.
  • I переименовал шрифт из Bebas Neue в BN:это работает! но почему?
  • возможно, вы не можете использовать "Neue" в имени шрифта (так как Helvetica Neue был системным шрифтом iOS до iOS 8). Переименовал шрифт для тестирования Neue:до сих пор работает.
  • может быть, вы не можете использовать "Bebas" в названии шрифта? Переименовал шрифт в Bebas:до сих пор работает.
  • что... Чтобы быть уверенным, я изменил имя шрифта на Bebas Neue:не работает снова.
  • я также попробовал BebasNeue:тоже не работает.
  • затем я изменил имя на Bebas Neue Whatever:это работает.

    Bebas Neue Whatever

Я действительно не понимаю, почему это происходит. Разве Apple или Xcode не хотят, чтобы вы использовали "Bebas Neue" или "BebasNeue" в Построителе интерфейса? У меня был установлен обычный Bebas Neue. Может быть, ссылка была повреждена? Я действительно не могу сказать. Возможно, кто-то в чистой системе может попробовать, если Bebas Neue работает в их Xcode.

в любом случае, я достиг своей цели: возможность использовать Bebas Neue (я назвал окончательную версию "Bebas Neue MyAppName") для Plain стилизованные метки и кнопки, поэтому я могу проектировать свое приложение как есть и не нужно возиться с приписываемыми строками.


его легко и просто теперь протестировано в Xcode 10 и swift 4.2

шаги для добавления шрифта в Xcode

выберите UILabel, UITextField или что-то еще в разделе шрифтов и следуйте

Шаг 1

выберите меню настроек в левом углу экрана выбора шрифта. И выберите опцию font manager.

enter image description here

Шаг 2

нажмите на кнопка Добавить, как указано ниже.

enter image description here

Шаг 3

выберите папку, содержащую шрифт. Он будет загружен в список шрифтов XCode.

шаги для добавления шрифтов в проект

не забудьте добавить описание в свой plist с помощью ключа Fonts provided by application и поместите файлы шрифтов внутри ресурсов copy bundle в разделе "целевые параметры проекта".

Да! вот и все.. наслаждаться..


на самом деле вы можете просто перейти в приписываемые шрифты, нажмите окно пользовательского шрифта. Там нажмите шестеренку в левом верхнем углу и нажмите на опцию Управление шрифтами. Окно должно всплывать и сверху, и должен быть знак плюс, чтобы вы могли добавлять шрифты. Просто выберите пользовательский шрифт, который вы загрузили, как xyz.tff, а затем его следует добавить.

важно отметить, что файл ttf должен быть указан в p-списке, а также в каталоге вашего проекта!


наконец, я нашел причины проблем с шрифтами Bebas Neue.

Я не помню, где я скачал шрифты, но Bebas Neue шрифты are непоследовательны.

скачать т. е. приложение под названием Typelight

открыть не обычный, а то полужирный шрифт Typelight.

enter image description here

вам нужно исправить большую часть Bebas Neue шрифты.


Это старая ошибка начиная с Xcode 3.x:

существует ошибка / известная проблема с IB на XCode 3.x с нестандартными шрифтами и построителем интерфейса. Пользовательские шрифты обычно должны быть установлены программно (через [uifont fontWithName:])

есть некоторые работы вокруг, как этой С User Defined Runtime Attribute и categories .


у меня была аналогичная проблема

добавлен пользовательский шрифт, а также назначить UILabel все работает нормально, но через несколько раз позже это не будет работать, как ожидалось.

пытается все решения, но ничего не работает для меня. Итак, вот мое решение, снова перейдем к предыдущему UILabel (уже добавлен пользовательский шрифт) выберите - >метка - >выберите недавно добавленный шрифт. Проверьте шрифт других элементов управления UI.

теперь он работает нормально.

надеюсь, это поможет newDevs...


Это все еще повторяющаяся проблема для меня с Swift 4.2, даже без внесения каких-либо изменений, которые могли бы вызвать его.

удаление файлов шрифтов из проекта Xcode и добавление их снова устраняет проблему (до следующего раза).