Пользовательский шрифт в ios не работает

Я хочу использовать 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..

У меня нет никаких ошибок или предупреждений. Помогите пожалуйста!

Ответ 1

Мало того, что файл необходимо добавить в проект, но его нужно добавить и в цель.

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

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

  • Нажмите на название проекта (левая панель)
  • Затем на целевой (средняя панель)
  • Затем "Сформировать фазы" (третья вкладка в правой панели)
  • Затем "Копировать ресурсы Bundle"

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

Ответ 3

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

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

Ответ 4

после добавления файла Font в Bundle "Шрифт, предоставленный приложением" , нажмите на стрелку вниз и введите имя шрифта с расширением

Ответ 5

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

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

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

Ответ 6

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

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

Ответ 7

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

    [compete_Label setFont:[UIFont fontWithName:@"Helvetica-Bold" size:12]];

Ответ 9

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

Ответ 10

Чтобы использовать пользовательские шрифты в iOS, просто добавьте свои шрифты, перетащив их в свой проект. Упомяните массив имен шрифтов с расширением в Info.plist с ключом "Шрифты, предоставляемые приложением". Затем распечатайте все фамилии шрифтов, используя следующий код:

for (NSString* family in [UIFont familyNames])

{

    DebugLog(@"FONT FAMILY: %@", family);

    for (NSString *name in [UIFont fontNamesForFamilyName: family])
    {
        DebugLog(@"  %@", name);
    }
}

Консольная печать:

Arial Hebrew ArialHebrew-Bold ArialHebrew-Light ArialHebrew

Calibri Calibri-Bold Calibri

Грузия  Грузия-BoldItalic  Грузия-Bold  Грузия-Italic  Грузия

Затем из консоли вы получите фактические имена шрифтов (как указано выше). Используйте ниже код для создания шрифта -

В основном тексте:

CTFontRef fontRef = CTFontCreateWithName((CFStringRef)fontName, fontSize, NULL);

В UIKit:

UIFont *font = [UIFont fontWithName:fontName size:10];

Примечание: здесь fontName = @ "Calibri-Bold" не имеет расширения.

Ответ 11

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

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

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

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

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