Вопрос по xcode, ios, iphone – xcode нестандартный шрифт ttf не работает

31

Хорошо, я читал SO и занимался поиском, но не могу понять, почему мой шрифт не работает.

Я думаю, что все сделал правильно, но когда я запускаю приложение, текст на моей кнопке появляется со стандартным системным шрифтом вместо того, который я импортировал. я добавилNSLog(@"%@",[UIFont familyNames]); чтобы увидеть, если это было в списке, но это не так. Что заставляет меня думать, что я настроил это неправильно.

Я надеюсь, что кто-то можетhelp me display the text in my label in my custom font. Спасибо всем, кто думает, что у них могут быть какие-либо предложения!

Step-by-step this is what I've done.

Step 1: Я скачал .ttf файл из интернета. В моем искателе это выглядит так: enter image description here

Step 2: Я перетащил файл шрифта в XCode из поиска и проверил «Скопировать файл в папку проекта». вариант. Так что в моем проекте я вижу:

enter image description here

Step 3: Я открыл шрифт в книге шрифтов, чтобы увидеть реальное имя файла, и я вижу это: enter image description here

Step 4: Я добавил ключ в мой файл MyApp-Info.plist с именем файла из XCode, включая тип файла. Это выглядит так:

enter image description here

Step 5: И тогда в моем коде я пишу это:

UIButton *thisLevelButton = [UIButton buttonWithType:UIButtonTypeCustom];

[thisLevelButton setBackgroundImage:[UIImage imageNamed:@"ccLSButtonPlayed"] forState:UIControlStateNormal];
thisLevelButton.frame = CGRectMake(x, y, BUTTON_WIDTH, BUTTON_HEIGHT);
thisLevelButton.tag = j;
[thisLevelButton addTarget:self action:@selector(userSelectedButton:) forControlEvents:UIControlEventTouchUpInside];
[thisLevelButton.titleLabel setFont:[UIFont fontWithName:@"PressStartK" size:24]];
[thisLevelButton setTitle:[NSString stringWithFormat:@"%i",(j+1)] forState:UIControlStateNormal];

// add the button to the panel
[subScroll addSubview:thisLevelButton];

Для справки, это то, что напечатано в списке семейств шрифтов:

(
    Thonburi,
    "Snell Roundhand",
    "Academy Engraved LET",
    "Marker Felt",
    "Geeza Pro",
    "Arial Rounded MT Bold",
    "Trebuchet MS",
    Arial,
    Marion,
    "Gurmukhi MN",
    "Malayalam Sangam MN",
    "Bradley Hand",
    "Kannada Sangam MN",
    "Bodoni 72 Oldstyle",
    Cochin,
    "Sinhala Sangam MN",
    "Hiragino Kaku Gothic ProN",
    Papyrus,
    Verdana,
    "Zapf Dingbats",
    Courier,
    "Hoefler Text",
    "Euphemia UCAS",
    Helvetica,
    "Hiragino Mincho ProN",
    "Bodoni Ornaments",
    "Apple Color Emoji",
    Optima,
    "Gujarati Sangam MN",
    "Devanagari Sangam MN",
    "Times New Roman",
    Kailasa,
    "Telugu Sangam MN",
    "Heiti SC",
    "Apple SD Gothic Neo",
    Futura,
    "Bodoni 72",
    Baskerville,
    "Chalkboard SE",
    "Heiti TC",
    Copperplate,
    "Party LET",
    "American Typewriter",
    "Bangla Sangam MN",
    Noteworthy,
    Zapfino,
    "Tamil Sangam MN",
    "DB LCD Temp",
    "Arial Hebrew",
    Chalkduster,
    Georgia,
    "Helvetica Neue",
    "Gill Sans",
    Palatino,
    "Courier New",
    "Oriya Sangam MN",
    Didot,
    "Bodoni 72 Smallcaps"
)
Спасибо Вам за Ваш вопрос!! Я следовал инструкциям, предполагая, что это ответ на связанный вопрос, и ДА! Моя проблема решена сейчас, и это не для английских шрифтов, а для персидских. Я вырывал свои волосы более двух лет и никогда не мог найти правильного решения даже с помощью пользовательских API и т. Д. Но, очевидно, в этот раз Apple заинтересовалась, позволив нам использовать собственный шрифт, просто добавив этот ключ к информации. PLIST. Еще раз спасибо! Neeku

Ваш Ответ

2   ответа
38

что вы не добавили файл шрифта в свою цель, чтобы он не копировался в ресурсы приложения. Здесь ваш код работает нормально, и шрифт отображается как «Нажмите Старт К» в списке семейств шрифтов.

большой отзыв спасибо bkbeachlabs
Спасибо!! Это было так раздражает. Я думаю, когда я перетащил файл, я фактически не копировал в цель. Поэтому я удалил файл ttf, затем вручную перешел в «Добавить файлы» в «MyApp». Это сработало bkbeachlabs
Инспектор файлов Xcode ⌘⌥1) также есть раздел «Целевое членство», в котором вы можете просто активировать флажок своей цели вместо удаления и повторного добавления файла. omz
12

что вы можете называть неправильное имя шрифта, когда пытаетесь вызвать свой шрифт. Использование:

Swift 2.1 +

//Check which fonts available
for family: String in UIFont.familyNames()
{
   print("\(family)")
   for names: String in UIFont.fontNamesForFamilyName(family)
   {
       print("== \(names)")
   }
}

Объективный C

//Check which fonts available
for (NSString* family in [UIFont familyNames])
{
    NSLog(@"FONT %@", family);

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

Чтобы найти фактические имена шрифтов, которые вы должны использовать с UIFont (name: "yourFontName", размер: 24.0) (swift) или [UIFont fontWithName: @ "yourFontName" size: 16.0f] (obj c). Имена пользовательских шрифтов, которые вы добавляете в список, должны совпадать с именами файлов в вашем каталоге (включая .ttf или .otf), но код, ссылающийся на шрифты, должен совпадать с именами шрифтов, которые вы получаете из этих выходных данных. Удачи мастерам шрифтов!

спасибо, у меня была похожая проблема, и оказалось, что система ссылалась на шрифт как другое имя, а не то, что я думал. sudo
Я предлагаю всем сделать это перед использованием названия шрифта! Отличное предложение! arniotaki

Похожие вопросы