Пользовательский шрифт в IOS не работает - PullRequest
42 голосов
/ 09 июля 2011

Я хочу использовать HelveticaNeue-UltraLight в своем приложении ios.Я добавляю файл шрифта в качестве ресурса в свой проект и добавляю ключ «Шрифты, предоставляемые приложением» в файл plist.Имя файла - HelveticaNeue.dfont, и я добавил его в массив ключей.

Когда я проверяю доступные шрифты, я вижу его сейчас ...

  NSArray *fonts = [UIFont fontNamesForFamilyName:@"Helvetica Neue"];

for(NSString *string in fonts){
    NSLog(@"%@", string);
}

1-07-08 17:32:57.866 myApp[5159:207] HelveticaNeue-Bold
2011-07-08 17:32:57.866 myApp[5159:207] HelveticaNeue-CondensedBlack
2011-07-08 17:32:57.867 myApp[5159:207] HelveticaNeue-Medium
2011-07-08 17:32:57.867 myApp[5159:207] HelveticaNeue
2011-07-08 17:32:57.868 myApp[5159:207] HelveticaNeue-Light
2011-07-08 17:32:57.868 myApp[5159:207] HelveticaNeue-CondensedBold
2011-07-08 17:32:57.868 myApp[5159:207] HelveticaNeue-LightItalic
2011-07-08 17:32:57.869 myApp[5159:207] HelveticaNeue-UltraLightItalic
2011-07-08 17:32:57.869 myApp[5159:207] HelveticaNeue-UltraLight // HERE IT IS!
2011-07-08 17:32:57.869 myApp[5159:207] HelveticaNeue-BoldItalic
2011-07-08 17:32:57.870 myApp[5159:207] HelveticaNeue-Italic

Но когдаЯ пытаюсь получить его с [UIFont fontWithName: @ "HelveticaNeue-UltraLight" size: 12] Я просто получаю HelveticaNeue-Light ..

Я не получаю ошибок или предупреждений.Помогите пожалуйста!

Ответы [ 14 ]

100 голосов
/ 03 мая 2012

Файл нужно не только добавить в проект, но и добавить его к цели.

Иногда (как в моем случае), при перетаскивании файла ".ttf" в Xcode, "добавить к цели" не проверяется.Это означает, что файл фактически видим в вашем проекте, но он не встроен в приложение.

Чтобы убедиться, что это:

  • Нажмите на название проекта (левая панель)
  • Затем на цели (средняя панель)
  • Затем «Фазы сборки» (третья вкладка на правой панели)
  • Затем «Копирование ресурсов комплекта»

Вы должны увидеть файл шрифта в этом списке.

19 голосов
/ 11 августа 2011

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

См. Сообщение в блоге здесь для получения подробной информации и решения.: http://www.pixeldock.com/blog/uifont-problem-when-using-more-than-2-custom-fonts-of-the-same-font-family/

9 голосов
/ 07 октября 2013

после добавления файла шрифта в Bundle Свойство «Шрифт, предоставляемый приложением» щелкните стрелку раскрывающегося списка и введите имя вашего шрифта с расширением

8 голосов
/ 19 мая 2015

Работает с разными вариациями одного и того же шрифта (даже в IOS 8).Я опубликую свою ошибку на тот случай, если у кого-то возникнет такая же проблема ... Я использовал имя шрифта вместо имени шрифта.Полезное решение - распечатать все доступные шрифты и найти тот, который я использовал.В Swift было бы:

for fontFamilyNames in UIFont.familyNames {
    for fontName in UIFont.fontNames(forFamilyName: fontFamilyNames) {
        print("FONTNAME:\(fontName)")
    }
}

Я нашел этот полезный учебник в: Код с Крисом

8 голосов
/ 10 апреля 2013

Открыть приложение Font Book. Если вы установили шрифты самостоятельно, перейдите к пользователю, найдите нужные шрифты и используйте имя шрифта PostScript в вашем проекте xcode.

Должно работать даже для разных вариантов шрифтов одного и того же семейства.

3 голосов
/ 27 января 2012

Хотя это, вероятно, не поможет ОП, это может быть полезно для других.

В iOS 5 автоматически включается Helvetica Neue;Вам не нужно добавлять этот пользовательский шрифт в комплект.Возможно даже использовать это семейство шрифтов непосредственно из Interface Builder, что очень удобно.

2 голосов
/ 03 мая 2012

Попробуйте, это также будет полезно для вас.

    [compete_Label setFont:[UIFont fontWithName:@"Helvetica-Bold" size:12]];
1 голос
/ 14 июня 2016

Потратив часы, я узнал, что имя для шрифта, который нам нужно добавить, - это не имя файла шрифта, а фактическое имя шрифта.Я пытался включить файл шрифта bonveno.ttf .Я включил имя файла вместе с расширением в info.plist и смог увидеть шрифт в списке Copy Bundle Resources .Мой код был похож на

self.label.font = [UIFont fontWithName:@"bonveno" size:30];

, который вызывал проблему.Затем я дважды щелкнул файл шрифта из Finder , чтобы увидеть предварительный просмотр шрифта.Тогда я заметил название шрифта в окне предварительного просмотра как BonvenoCF .Поэтому я добавил это имя в коде, например

self.label.font = [UIFont fontWithName:@"BonvenoCF" size:30];

Работает как шарм!Не могу жить без этого милого шрифта в моих приложениях.

1 голос
/ 14 июля 2011

В итоге я купил шрифт Helvetica Neue UltraLight у стороннего производителя, добавил его без проблем.

1 голос
/ 09 июля 2011

Попробуйте с пробелами:

[UIFont fontWithName:@"Helvetica Neue UltraLight" size:12];

См. Какие шрифты не отображаются?

...