Установка пользовательского шрифта в target-c

Хихо,

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

_textLabel1 = [[UILabel alloc] initWithFrame:CGRectMake((CGFloat) (self.view.center.x - (self.view.bounds.size.width / textWidth / 2)),
            (CGFloat) (self.view.center.y * textPositionY), (CGFloat) (self.view.bounds.size.width / textWidth), (CGFloat) textHeight)];
_textLabel1.numberOfLines = 0;
_textLabel1.textAlignment = NSTextAlignmentCenter;
_textLabel1.textColor = clr;
_textLabel1.text = @"Favoriten";
[_textLabel1 setFont:[UIFont fontWithName:@"assets/fonts/Kingthings_Trypewriter_2.ttf" size:36]];
[_favouriteViewer addSubview:_textLabel1];
_textLabel1.font=[_textLabel1.font fontWithSize:25];

Я также добавил собственный шрифт в свой plist:

<key>UIAppFonts</key>
<array>
    <string>Kingthings_Trypewriter_2.ttf</string>
</array>

Я сохранил свой собственный шрифт в названной папке активов, которую я вызвал:

[_textLabel1 setFont:[UIFont fontWithName:@"assets/fonts/Kingthings_Trypewriter_2.ttf" size:36]];

У меня не отображается шрифт в симуляторе.

Спасибо за помощь!

Изменить: я использую AppCode, а не Xcode.

Редактировать2:

Благодаря Ganesh Somani я использовал его код, чтобы выяснить, правильно ли мой шрифт добавлен в проект через ресурсы Copy Bundle, но, к сожалению, он все еще не отображается в журнале.

for(NSString *fontfamilyname in [UIFont familyNames])
{
    NSLog(@"Family:'%@'",fontfamilyname);
    for(NSString *fontName in [UIFont fontNamesForFamilyName:fontfamilyname])
{
    NSLog(@"\tfont:'%@'",fontName);
}
NSLog(@"---");
}

Решение. По какой-то причине в моем проекте было два файла .plist. Я вставил следующий код, и теперь он работает:

<key>UIAppFonts</key>
<array>
    <string>"fontName.ttf"</string>
</array>

Спасибо всем участникам за помощь!


person Vancore    schedule 15.09.2015    source источник
comment
ты пробовал использовать только [UIFont fontWithName:@"Kingthings_Trypewriter_2" size:36]   -  person Vin    schedule 15.09.2015
comment
Первое первым. какое у вас название шрифта? это редко совпадает с точным именем файла, потому что это определенно не имя файла с путем... поэтому, вероятно, вам нужно сначала найти имя шрифта.   -  person holex    schedule 15.09.2015
comment
@Vancore Я ответил на тот же вопрос в своем предыдущий пост. Пожалуйста, проверьте это, это, безусловно, поможет вам.   -  person Dipen Panchasara    schedule 15.09.2015
comment
@Vin Я сделал, но это не работает.   -  person Vancore    schedule 15.09.2015
comment
@holex Как узнать название шрифта? Я попробовал это, но Kingsthings не появится: for (NSString *fontfamilyname in [UIFont familyNames]) { NSLog(@Family:'%@', fontfamilyname); for (NSString *fontName in [UIFont fontNamesForFamilyName:fontfamilyname]) { NSLog(@\tfont:'%@', fontName); } NSLog(@~~~~~~~~); }   -  person Vancore    schedule 15.09.2015
comment
@Vancore, в одном из ответов уже рекомендовалось использовать приложение Fontbook, я бы порекомендовал выяснить то же самое, потому что оно покажет вам название шрифта на экране информации о шрифте.   -  person holex    schedule 16.09.2015
comment
@holex Я использовал Fontbook и узнал о необходимом имени PostScript. К сожалению, я до сих пор не могу найти способ отобразить свой шрифт.   -  person Vancore    schedule 16.09.2015
comment
@Vancore, вы могли бы поделиться шрифтом, может быть, чтобы поближе взглянуть на это ... потому что вся процедура точно описана в ответах.   -  person holex    schedule 16.09.2015
comment
@holex fontsquirrel.com/fonts/Kingthings-Trypewriter Это шрифт, который я хочу использовать. Возможно проблема в самом шрифте.   -  person Vancore    schedule 16.09.2015
comment
Я гений... почему-то у меня в папке было 2 файла .plist. Теперь я добавил в файл ‹key›UIAppFonts‹/key› ‹array› ‹string›Kingthings_Trypewriter_2.ttf‹/string› ‹/array›, и он работает. Огромное спасибо за помощь!   -  person Vancore    schedule 16.09.2015


Ответы (4)


Просто импортируйте файлы шрифтов в свой проект:

импортировать файлы

Затем добавьте их в свой файл Info.plist:

файл plist

Затем вы можете использовать их в своем коде:

введите описание изображения здесь

Убедитесь, что вы используете правильное имя, в приложении шрифта (после двойного щелчка и установки шрифта на свой компьютер вы можете увидеть эту информацию) нажмите CMD + i и проверьте «имя PostScript» вашего шрифта, так вы позвонит.

введите описание изображения здесь

Откройте свой проект в Xcode, нажмите на значок проекта, выберите цель, затем «Фазы сборки», перейдите в раздел «Копировать ресурсы пакета» и проверьте, есть ли ваши шрифты (помните, что вам нужно добавить их в папку вашего проекта):

введите описание изображения здесь

person Roberto Ferraz    schedule 15.09.2015
comment
Спасибо за ответ! Я забыл упомянуть, что я использую только AppCode, я не особо увлекаюсь XCode. Мое меню шрифтов (я относительно новичок в Mac) выглядит немного иначе, я не могу найти имя PostScript для моего шрифта. Я постараюсь добавить скриншот. - person Vancore; 15.09.2015
comment
Я открыл свой проект в Xcode, и он, кажется, добавил в мой файл plist: directupload. сеть/файл/d/4111/plifkr8l_png.htm - person Vancore; 15.09.2015
comment
Извините за спам, сейчас узнал настоящее имя... KingthingsTrypewriter2. Но все равно не работает. [_textLabel1 setFont:[UIFont fontWithName:@KingthingsTrypewriter2 size:36]]; _textLabel1.font = [UIFont fontWithName:@KingthingsTrypewriter2 size:36]; - person Vancore; 15.09.2015
comment
Вы добавили шрифт в папку проекта? Попробуйте удалить приложение симулятора, очистите сборку и установите снова. Также см. последний сделанный мной РЕДАКТИРОВАТЬ. - person Roberto Ferraz; 16.09.2015
comment
Я добавил шрифт, как вы можете видеть на этом рисунке: directupload.net/file/ d/4112/sik6j58p_png.htm Так что это в моей папке + в моем файле plist и все еще не работает. - person Vancore; 16.09.2015
comment
После всего этого... ты пытался снова использовать метод Ганеши? один из другого ответа .. это должно дать вам некоторый результат сейчас - person Roberto Ferraz; 16.09.2015
comment
Я пробовал, но мой шрифт по-прежнему не отображается в журнале. - person Vancore; 16.09.2015

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

У меня когда-то была такая же проблема, но с ярлыками.

Этот ответ решил эту проблему для меня. Может быть, это поможет вам.

Также нашел очень хорошую статью о том, как добавить пользовательские шрифты в приложение для iOS

Изменить

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

Используйте следующий код, чтобы найти настоящее имя

for(NSString *fontfamilyname in [UIFont familyNames])
{
    NSLog(@"Family:'%@'",fontfamilyname);
    for(NSString *fontName in [UIFont fontNamesForFamilyName:fontfamilyname])
    {
        NSLog(@"\tfont:'%@'",fontName);
    }
    NSLog(@"---");
}
person Ganesh Somani    schedule 15.09.2015
comment
Ответы содержат только ссылки, возможно, недостаточно хорошие. Лучше объяснить, что пропустил ОП, или просто прокомментировать. - person WangYudong; 15.09.2015
comment
@GaneshSomani Я тоже пробовал, но моего собственного шрифта не было в списке. Что я могу с этим поделать? - person Vancore; 15.09.2015
comment
Вы проверили Фазы сборки->Копировать ресурсы пакета? - person Ganesh Somani; 15.09.2015
comment
Вы имеете в виду это: directupload.net/file/d/4111/plifkr8l_png.htm Большое спасибо за ответы! Извините, я забыл упомянуть, что я использую AppCode. - person Vancore; 15.09.2015
comment
Извините, но я точно не знаю, на что похож интерфейс AppCode. Но это должно быть место, где вы устанавливаете флаги для кода без дуги... я добавлю скриншот, когда у меня будет время - person Ganesh Somani; 17.09.2015

Если вы используете Objective-c, то для отображения семейств шрифтов вы можете использовать следующий цикл:

for(int i =0; i < UIFont.familyNames.count; i++){
    NSString *myFontName = [UIFont.familyNames objectAtIndex:i];
    NSLog(@"here myFontFamily is %@",myFontName);
    for (int j = 0; j < [UIFont fontNamesForFamilyName:myFontName].count; j++){
        NSLog(@" here the font is %@",[[UIFont fontNamesForFamilyName:myFontName]objectAtIndex:j]);
    }
} 
person Jeet Kapadia    schedule 07.11.2018

В дополнение к хорошо объясненному @Roberto answer, если вы все еще не получаете свои шрифты, просто используйте или назначьте свой шрифт к любому Label в одном из ваших Storyboard, вы начнете получать его, используя этот код

Если вы по-прежнему не можете получить шрифт с помощью [UIFont fontWithName:@"Font-Regular" size:11];, возможно, проблема в именовании. Остановитесь в любой точке останова в отладчике и отладьте ее, используя разные имена, и посмотрите, какой po печатает объект, который не nil

po [UIFont fontWithName:@"FontRegular" size:11];

or

po [UIFont fontWithName:@"Font Regular" size:11];

or

po [UIFont fontWithName:@"Font-Regular" size:11];

Вы получите <UICTFont: 0x7fe2044021d0> font-family: "Interstate-Regular"; font-weight: normal; font-style: normal; font-size: 11.00pt для фактического имени шрифта, иначе вы получите nil

person Baig    schedule 26.11.2018