Пользовательский шрифт в раскадровке?


У меня есть шрифт, добавленный в мой проект iOS. Он находится в проекте и копируется при сборке проекта. Он кажется допустимым шрифтом и будет отображаться, если я перечислю все шрифты на устройстве через приложение. У меня есть plist настроен правильно, чтобы включить шрифт. Кажется, я не могу заставить найти, чтобы использовать его в своих текстовых элементах управления, кнопках и т. д. В разделе раскадровки Xcode 4.2. Кроме того, он не позволяет мне вводить имя шрифта, это заставляет меня использовать диалоговое окно шрифта. Я попытался установите этот шрифт в систему, но не могу показаться, чтобы получить его, чтобы показать в этом списке. Мне нужно сделать это в коде, или я могу сделать это через интерфейс раскадровки?

обратите внимание, что я могу заставить это работать в коде, но было бы гораздо удобнее сделать это через раскадровку.

7 62

7 ответов:

UPDATE: Xcode 6 Interface Builder теперь позволяет выбирать пользовательские шрифты и правильно отображать их во время разработки.

я знаю, что этот вопрос довольно старый, но я изо всех сил пытался найти простой способ легко указать пользовательский шрифт в раскадровке (или Построителе интерфейса) для iOS 5, и я нашел довольно удобное решение.

во-первых, убедитесь, что вы добавили шрифт в проект после в этом уроке. Также помните, что Пользовательский шрифт UINavigationBar, UITabBar и UISegmentedControl можно указать с помощью setTitleTextAttributes: метод UIAppearance proxy.

добавьте следующие категории в проект для UIButton, UITextField, UILabel и любого другого компонента, который нуждается в пользовательском шрифте. Категории просто реализуют новое свойство fontName который изменяет текущий шрифт элемента при сохранении размера шрифта.

чтобы указать шрифт в раскадровке, просто выберите нужный элемент (метка, кнопка, textview и т. д.) и добавить Определенные Пользователем Атрибуты Во Время Выполнения С Путь К Ключу значение fontName типа строка и значение с именем вашего пользовательского шрифта.

Custom font Storyboard

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

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


от Xcode6. 0, как Xcode6.0 релиз Примечание:

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

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

  1. получить пользовательский файл шрифта(.ТТФ.ttc)
  2. импорт файлов шрифтов в Xcode проект

    enter image description here

  3. на app-info.файл plistдобавить ключ с именем шрифты, предоставляемые приложением. это тип массива, добавьте все имя файла шрифта в массив,Примечание:включая расширение файла.

enter image description here

  1. в раскадровке перетащите UILabel в интерфейс, выберите метку и перейдите к Инспектора Атрибут,нажмите кнопку правая кнопка значка шрифт выберите область. во всплывающей панели выберите шрифт до Custom и выберите семья из вас встроенное имя шрифта.

enter image description here

судьи

Это ошибка в XCode, была там с 3.x и до сих пор не исправлена. Я тоже столкнулся с той же проблемой, даже попытался добавить его в свою систему без везения. Вот еще один так пост об этом шрифты не отображаются в Interface Builder

ответ Монжера правильный. Если вы, как и я, не видите добавленный шрифт после компиляции, обязательно добавьте шрифт в фазы сборки (цели -> фазы сборки -> копировать ресурсы пакета -> добавить файлы шрифтов)

решение redent84 было потрясающим!

Я бы просто добавил улучшение, добавил категорию на NSObject, поэтому вам нужно сделать это только один раз.

NSObject+CustomFont.h

#import <Foundation/Foundation.h>

@interface NSObject (CustomFont)

@property (strong, nonatomic) NSString *fontName;
@property (strong, nonatomic) UIFont *font;

@end

NSObject+CustomFont.м

#import "NSObject+CustomFont.h"

@implementation NSObject (CustomFont)

@dynamic font;

- (NSString *)fontName
{
    return self.font.fontName;
}

- (void)setFontName:(NSString *)fontName
{
    self.font = [UIFont fontWithName:fontName size:self.font.pointSize];
}

@end

ни один из них не работал для меня, но это сделал.

#import <UIKit/UIKit.h>

@interface UILabelEx : UILabel


@end

#import "UILabelEx.h"
#import "Constants.h"

@implementation UILabelEx

- (void) traitCollectionDidChange: (UITraitCollection *) previousTraitCollection {
    [super traitCollectionDidChange: previousTraitCollection];

    self.font = [UIFont fontWithName:APP_FONT size:self.font.pointSize];   
}
@end

начиная с XCode 9.4, XCode по-прежнему не уважает шрифты непосредственно в раскадровке. Вы можете видеть их во время разработки, но не во время выполнения. Если вы используете FONTWITHNAME API, вы узнаете, что он возвращает nil, но при использовании в storyboard/xib нет способа узнать, почему он не появляется.

  • единственный способ убедиться, что он работает легко из раскадровки/XIB во время выполнения, чтобы добавить .ТТК./ТТФ в Copy Bundle Resources Этап Сборки.

  • по состоянию на 9.4, добавив имена файлов шрифтов для информации.плист, кажется, больше не является требованием.