Пользовательский шрифт не отображается на устройстве, но отображается в симуляторе

Я поигрался с пользовательскими шрифтами в iOS и понял, что большинство из них разобрались, кроме того, что пользовательский шрифт не будет отображаться ни на одном из моих устройств.

  1. Я добавил шрифт в корень файла проекта.
  2. Добавил его в файл info.plist в массив или «Шрифты, предоставленные приложением»
  3. Проверено, что чувствительность к регистру как в исходном файле, так и в том, что я добавил в файл info.plist, одинаковы.
  4. Используется [playMenuBtn.titleLabel setFont:[UIFont fontWithName:@"fontname" size:40]];, чтобы шрифт работал.

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

Если я использую:
UIFont *font = [UIFont fontWithName:@"VINCASTENCIL" size:20]; NSLog(@"Font:%@", font);

Затем симулятор возвращается: 2012-04-07 01:10:41.544 AppName[47412:f803] Font:<UICFFont: 0x683e040> font-family: "VINCA STENCIL"; font-weight: normal; font-style: normal; font-size: 20px

Где возвращается устройство: 2012-04-07 00:42:56.358 AppName[5079:707] Font:(null)

Я перепробовал все, включая все имена, которые FontBook сообщает мне, что шрифт может быть назван. Я знаю, что это бесплатно и на него нет лицензии.

Любая помощь будет принята с благодарностью, так как это сводит меня с ума, и я действительно не хочу использовать изображения для всех из них, поскольку в этом случае локализация будет проблемой!


person Baza207    schedule 07.04.2012    source источник
comment
Поставляется ли шрифт в комплекте с приложением для iOS?   -  person Allison    schedule 07.04.2012
comment
[UIFont familyNames] перечисляет шрифт, который вы добавили?   -  person MrMage    schedule 07.04.2012
comment
какие расширения есть у файлов шрифтов? TTF или ttf?   -  person NeverBe    schedule 07.04.2012
comment
@TheDeveloper Я перетащил шрифт в менеджер проектов в Xcode, и он появился в моем списке ресурсов. Это то, что вы подразумеваете под упакованным?   -  person Baza207    schedule 07.04.2012
comment
@MrMage Я пробовал добавить: NSArray *fontArray = [UIFont familyNames]; NSLog(@"Font FamilyNames:%@", fontArray); И на симуляторе мой шрифт появляется в списке, где, как опять же, на устройстве его нет.   -  person Baza207    schedule 07.04.2012
comment
@NeverBe Это расширение файла .ttf, и я убедился, что он везде одинаков. Я также пробовал везде менять его на верхний регистр, просто чтобы проверить, и это не имело никакого значения.   -  person Baza207    schedule 07.04.2012
comment
вы пробовали чистую сборку и удаление приложения с устройства?   -  person NeverBe    schedule 07.04.2012
comment
@NeverBe Ага, попробовал. По-прежнему никакой радости. :-(   -  person Baza207    schedule 07.04.2012
comment
перечислить все шрифты, как в stackoverflow .com / questions / 9750222 /   -  person NeverBe    schedule 07.04.2012
comment
Отправил ответ ниже, и теперь все работает. Спасибо за вашу помощь всем.   -  person Baza207    schedule 07.04.2012


Ответы (2)


Хорошо, мне только что удалось заставить это работать. Все, что я делал, было правильным, но по какой-то причине мой файл шрифта не добавлялся в «Цели» -> «Фазы сборки» -> «Копировать ресурсы пакета». Если вручную добавить его в этот список, шрифт отобразится на устройстве.

Это второй раз, когда этот проект не добавил сюда файл автоматически (это было сделано ранее с добавленным мной классом, а этого не произошло), поэтому я думаю, что что-то не так с моим проектом или ошибка в Xcode.

Спасибо всем за ваши предложения и помощь. :-D

person Baza207    schedule 07.04.2012
comment
Это вроде того, что мне грустно D: - person Allison; 07.04.2012
comment
@TheDeveloper: да, это была причина, по которой я в конце концов его проверил. Спасибо! :-) - person Baza207; 07.04.2012
comment
Похоже, что xcode не добавляет файлы TTF в ресурсы пакета по умолчанию, в отличие, например, от png. Такая же проблема здесь, - person Chris; 11.07.2012
comment
Я также столкнулся с той же проблемой, но шрифты отображаются в Copy Bundle Resources. I Добавлены два пользовательских шрифта. Один шрифт работает, а второй не работает ... не знаю почему - person Omer Obaid; 22.01.2014
comment
@OMerObaid Я обнаружил, что двойная проверка имени, которое он называет, также полезна. Лучший способ узнать, знает ли ваше устройство шрифт, есть ли цикл через [UIFont familyNames] и [UIFont fontNamesForFamilyName:] и вывести имена шрифтов из системы. FontBook также отлично подходит для определения названия шрифта. - person Baza207; 02.02.2014

Да, следуйте всем указанным выше инструкциям, и все будет в порядке. Еще кое-что, на что следует обратить внимание: чувствительность к регистру. В вашем файле * .plist и Fonts provided by application. Симулятор может игнорировать заглавные буквы, но устройство - нет. Например, «Facebook» - это не то же самое, что «FaceBook». (Это привело к тому, что в симуляторе заработал шрифт, но не устройство!)

person Jeremy C.    schedule 25.03.2015