iOS. шрифт доступен на симуляторе, но не на устройстве

Я использую собственный шрифт в своем приложении и столкнулся с очень странной проблемой. Шрифт доступен в симуляторе, но недоступен на реальном iPad.

1 Я не путаю имя шрифта и имя файла. Имя файла — bitdust2.ttf, тогда как имя шрифта — BitDustTwo, и так я его называю, и на симуляторе все в порядке.

2 Дело не в чувствительности к регистру. Шрифт действительно недоступен на устройстве. Я знаю эту причину, когда я делаю это:

NSLog(@"%@", [UIFont familyNames]);

я вижу, что на симуляторе мой шрифт включен в массив familyNames, но отсутствует на iPad. Что случилось? Вы когда-нибудь сталкивались с такой проблемой?


person Andrey Chernukha    schedule 03.07.2013    source источник
comment
Не все шрифты, доступные на Mac, доступны на устройствах iOS. Почему ты удивлен?   -  person Abizern    schedule 03.07.2013
comment
Вы имеете в виду, что я не могу добавлять определенные типы пользовательских шрифтов?   -  person Andrey Chernukha    schedule 03.07.2013
comment
Проверьте на устройстве, какая версия iOS есть, и в симуляторе, какая версия iOS есть, если на устройстве установлена ​​более ранняя версия iOS, чем симулятор, тогда какой-то добавленный шрифт или функция не будут работать в более ранней версии iOS.   -  person Gyanendra    schedule 03.07.2013
comment
Вы проверили, что файл шрифта bitdust2.ttf был добавлен в цель и скопирован в комплект приложения?   -  person Martin R    schedule 03.07.2013
comment
@MartinR сделай это ответом, чтобы я мог его принять. Вы помогли   -  person Andrey Chernukha    schedule 03.07.2013
comment
@AndreyChernukha: Готово. Я рад, что это помогло.   -  person Martin R    schedule 03.07.2013


Ответы (5)


(Из комментария выше:) Убедитесь, что файл шрифта "bitdust2.ttf" был добавлен в цель и скопирован в комплект приложения.

person Martin R    schedule 03.07.2013

Симулятор, как было сказано, является симулятором, а не настоящим эмулятором. Симулятор работает с теми же API-интерфейсами, но поскольку симулятор работает на OS X, а не на iOS, симулятор часто имеет больше функциональных возможностей. Например, классы медиаплеера в симуляторе поддерживают больше типов файлов (кодеков), чем на устройстве, потому что OS X поддерживает больше кодеков, чем iOS. В симуляторе доступно больше шрифтов, чем на устройстве.

Подробнее о встраивании шрифтов в приложение iOS:

Существует простой способ использовать пользовательские шрифты в iOS 4.

  1. Добавьте файл шрифта (например, Chalkduster.ttf) в папку Resources проекта в XCode.
  2. Откройте info.plist и добавьте новый ключ с именем UIAppFonts. Тип этого ключа должен быть массивом.
  3. Добавьте в этот массив имя собственного шрифта, включая расширение (Chalkduster.ttf).
  4. Теперь вы можете использовать [UIFont fontWithName:@"Chalkduster" size:16] в своем приложении.

Важно не пропустить ни одного шага. Если у вас все еще есть проблемы, перейдите на вкладку «Фазы сборки» вашего проекта в XCode и на вкладке «Копировать ресурсы пакета» убедитесь, что ваш файл шрифта включен. Если нет, добавьте его.

person Marcus Adams    schedule 03.07.2013

Проверьте версию ОС вашего устройства, а также его поддержку версий iOS. Пользовательский шрифт, который вы использовали, должен быть совместим с iOS вашего устройства.

Проверьте этот ответ. Возможно, вам понадобится альтернативный пользовательский шрифт, если он не поддерживается.

person NightFury    schedule 03.07.2013

У меня была такая же проблема, и после проверки все было правильно:

  • Шрифт добавлен к соответствующему ключу в info.plist "Шрифты, предоставляемые приложением"
  • Шрифт добавляется в проект -> информация под тем же ключом, что и info.plist (это просто означает, что я сохранил plist)
  • Файл шрифта добавлен в проект
  • Файл шрифта находится в папке проекта
  • Проект -> цель -> Этапы сборки -> Копировать ресурсы пакета: содержит мой файл шрифта
  • Файл отмечен как связанный с целью

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

person A'sa Dickens    schedule 25.04.2014

Вам нужно будет встроить шрифт в приложение; инструкции здесь.

person user2536988    schedule 03.07.2013