Установка шрифта UILabel с помощью Interface Builder выходит Helvetica - PullRequest
9 голосов
/ 06 августа 2010

У меня проблема с настройкой шрифта для UILabels и UITextViews с помощью Interface Builder.Я пытаюсь установить шрифт Gill Sans.Если я установлю его программно, он будет работать нормально, например так:

    myLabel.font = [UIFont fontWithName:@"Gill Sans" size:24.0];

Но если я попытаюсь установить его с помощью Interface Builder, то получу то же поведение, описанное в этом вопросе здесь iPhone SDK: метка Interface BuilderШрифт, отображается только при редактировании метки , но Gill Sans предположительно доступен на iPad (и это так, поскольку он работает, если я установил его по коду).И если я запускаю его и делаю это:

    NSLog(@"%@", myLabel.font.fontName);

, то выводится «Helvetica».

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

Кто-нибудь сталкивался с этой проблемой раньше?Может быть, Interface Builder ограничивает меня в использовании шрифтов iPhone, хотя цель файла xib уже установлена ​​на iPad, но как мне убедить его, что я нацеливаюсь на iPad?

Заранее спасибо, filipe

Ответы [ 7 ]

3 голосов
/ 06 августа 2010

Хорошо, очевидно, об этом сообщалось как об ошибке в IB 3.2.3:
https://devforums.apple.com/message/236134#236134
Этот парень говорит, что раньше работал на 3.2.2, так что я посмотрю, смогу ли я понизитьили я просто подожду исправления от Apple.

2 голосов
/ 25 июня 2012

Проверьте этот пост, если вы не хотите создавать IBOutlet.

https://stackoverflow.com/a/6620938/400909

2 голосов
/ 06 августа 2010

Вы можете использовать только те шрифты, которые есть в iPhone OS. Проверьте этот ответ , чтобы узнать, как встроить пользовательские шрифты в ваше приложение.

1 голос
/ 24 сентября 2013

Ознакомьтесь с категорией IBCustomFonts, которую я написал: https://github.com/deni2s/IBCustomFonts

Категория IBCustomFonts позволяет использовать пользовательские шрифты из Интерфейсного Разработчика (IB) при создании приложений для iOS.

Приложения, использующие категорию IBCustomFonts,одобрен Apple App Store (по состоянию на сентябрь 2013 г.).

Нет необходимости использовать IBOutlets, создавать подклассы UILabels и UIButtons или менять шрифты в коде.

Протестировано на iOS6 и iOS7.

0 голосов
/ 08 мая 2013

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

https://github.com/IntrepidPursuits/IPCustomFontLabel

0 голосов
/ 05 февраля 2013

Если вы используете подход UILabel для создания подклассов, а также хотите сохранить вес, установленный в IB, тогда использование может сделать что-то, как показано ниже.Я не мог найти лучший способ узнать, является ли существующий шрифт жирным, курсивом или обычным

- (void)awakeFromNib
{
    [super awakeFromNib];

    NSString *weight = [self.font.fontName substringFromIndex:[self.font.fontName length] - 5];
    if ( [weight isEqualToString:@"-Bold"] )
    {
        self.font = [UIFont fontWithName:@"MyriadWebPro-Bold" size:self.font.pointSize];
    }
    else if ( [weight isEqualToString:@"-Italic"] )
    {
        self.font = [UIFont fontWithName:@"MyriadWebPro-Italic" size:self.font.pointSize];
    }
    else
    {
        self.font = [UIFont fontWithName:@"MyriadWebPro" size:self.font.pointSize];
    }
}
0 голосов
/ 10 апреля 2011

Очистка всех целей работает несколько раз. Мне пришлось выйти из IB и XCode, чтобы получить шрифты в моем последнем случае. Я использую xcode / IB 3.2.5, и я использовал chalkduster 13pt

Е.И.В.

...