Разработка надписей / текстовых представлений с помощью пользовательских шрифтов в Интерфейсном Разработчике - PullRequest
14 голосов
/ 13 марта 2012

В настоящее время я работаю над проектом iPhone, в котором все надписи / текстовые представления и т. Д. Должны отображаться с пользовательским шрифтом (я использую Xcode 4.2.1). Я провел некоторые исследования по этому вопросу, и, похоже, единственным решением является добавление файлов шрифтов в проект, надлежащим образом редактирование файла info.plist и программная установка шрифта (т. Е. С помощью розеток или с помощью подклассов соответствующих представлений). В любом случае, эти подходы не приведут к тому, что конструктор интерфейса отобразит текст с пользовательским шрифтом (он все равно будет отображать Helvetica). Невозможно выбрать пользовательский шрифт с помощью инспектора атрибутов.

Хотя я не думаю, что что-то пропустил, я просто хочу убедиться, что нет другого способа, кроме программной установки шрифтов, что было бы довольно болезненным для задачи, над которой я должен работать (проблемы локализации, уникальное приложение дизайн и т. д.). Было бы неплохо, чтобы конструктор интерфейса отображал пользовательские шрифты ..

Ответы [ 8 ]

42 голосов
/ 13 марта 2012

Пользовательские шрифты могут быть установлены только программно ... К сожалению ... это называется ошибкой в ​​конструкторе интерфейса и еще не исправлено.

6 голосов
/ 20 декабря 2012

с использованием пользовательских шрифтов в Интерфейсном Разработчике доступна многократно используемая библиотека.

Для этого используется простой прием.Установите шрифт (скажем, calibri) для всех ваших элементов пользовательского интерфейса, которые вы никогда не будете использовать в своем проекте, и FontReplacer выполнит сопоставление между пользовательским шрифтом и calibri.Так что нет необходимости создавать IBOutlets или любую другую графику.

Вот ссылка на github, откуда вы можете скачать FontReplacer для использования в вашем проекте.https://github.com/0xced/FontReplacer

другой вопрос касается тех же Шрифты не отображаются в Интерфейсном Разработчике Я также разместил там возможное решение

2 голосов
/ 19 сентября 2014

Начиная с XCode 6 теперь он видит шрифт, который мне нужно было импортировать (Lato).

Много не тестировал, но работает для простых текстовых меток, а не для атрибутивных. Атрибут отлично отображается в Интерфейсном Разработчике, но по умолчанию используется системный шрифт во время выполнения.

Еще гораздо лучше иметь его там визуально или комбинировать текстовые метки, чтобы получить "атрибутивный" текст!

1 голос
/ 04 июня 2015

Применимо для iOS 5.0 и выше.

Создайте пользовательский класс UI-элемента (UIButton, UILabel, UITextField и т. Д.) И просто измените имя класса для конкретного элемента в раскадровке длякоторый вы хотите отразить изменение.

Ниже приведен код для пользовательской кнопки.Вы можете сделать то же самое для любого другого элемента.

CustomButtton.h

@interface CustomButtton : UIButton

@end

CustomButtton.m

@implementation CustomButtton

    - (void)awakeFromNib {
        // Initialization code

        if ([self isFontBold:self]) {

            self.titleLabel.font = [UIFont fontWithName:@"LaoUI-Bold" size:self.titleLabel.font.pointSize];

        } else {

            self.titleLabel.font = [UIFont fontWithName:@"LaoUI" size:self.titleLabel.font.pointSize];
        }

        NSLog(@"Fonts:%@",[UIFont familyNames]);
    }

    -(BOOL)isFontBold:(UIButton *)sender {

        UIFont *font = self.titleLabel.font;
        UIFontDescriptor *fontDescriptor = font.fontDescriptor;
        UIFontDescriptorSymbolicTraits fontDescriptorSymbolicTraits = fontDescriptor.symbolicTraits;
        return (fontDescriptorSymbolicTraits & UIFontDescriptorTraitBold);
    }

@end

Теперь просто установите размер шрифта и тип (полужирный или обычный).Он автоматически обновит элемент с пользовательским шрифтом.

By: [UIFont familyNames] - вы можете проверить, включено ли ваше пользовательское семейство шрифтов в приложение или нет, которое вы определили в файле .plist.

Во-вторых: Вы должны добавить ключ в файл .plist вашего проекта, как показано на скриншоте ниже:

.plist change for custom font support in application

1 голос
/ 16 апреля 2014

Это действительно неудобно.В ожидании этой функции, я думаю, это поможет вам организовать ваш код относительно шрифта в проекте iOS.

В общем классе, который вы используете для определения некоторых глобальных переменных, таких как Common.h, вы определяете шрифты, которые вы можетеиспользуйте

#define FONT_LATO_REGULAR(s) [UIFont fontWithName:@"Lato-Regular" size:s]
#define FONT_LATO_LIGHT(s) [UIFont fontWithName:@"Lato-Light" size:s]
#define FONT_LATO_BOLD(s) [UIFont fontWithName:@"Lato-Bold" size:s]

Затем вы импортируете Common.h (ваш общий класс) в реализуемый класс, установите шрифт для метки с помощью:

_lblTitle.font = FONT_LATO_BOLD(14.0);

Наконец, вы можете поместить весь шрифтнастройки в метод для дальнейшей модификации.

- (void) setFontForLabels {
    _lblTitle.font = FONT_LATO_BOLD(14.0);
    _lblTime.font = FONT_LATO_REGULAR(13.0);
    _lblLocation.font = FONT_LATO_REGULAR(13.0);
}

Это может вам немного помочь.Убедитесь, что вы уже импортировали свои шрифты в файл splist.

0 голосов
/ 07 декабря 2014

Вы можете установить собственный шрифт в раскадровке или xib с помощью инспектора атрибутов , пожалуйста, укажите Пользовательский шрифт в раскадровке?

0 голосов
/ 08 октября 2014

Я не пробовал это с более ранними версиями, но с XCode 6, если у вас правильно установлен шрифт в вашем проекте и вы устанавливаете шрифты на вашем Mac, например, с помощью Font Book, XCode показывает шрифты вСредство выбора шрифтов позволяет вам устанавливать несколько пользовательских шрифтов и размеров в одной метке, и, кажется, фактически использует правильные шрифты во время выполнения.

Это не все розы.Атрибуты управления Interface Builder все еще в беспорядке.Он часто теряет отслеживание назначенных свойств, особенно если вы пытаетесь присвоить более одного абзаца одновременно.Цвета шрифта не очень хорошо прилипают.Перекрывающиеся выделения просто невероятно запутывают, например, если ваша метка имеет два абзаца с двумя разными шрифтами, и вы выбираете оба и изменяете размер шрифта, он может установить для атрибутов одного или обоих абзацев системное значение по умолчанию.

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

Вы можете использовать простой трюк для использования пользовательских шрифтов в конструкторе интерфейсов.Вот описательный учебник, который может помочь вам в этом отношении Нажмите здесь для учебника

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...