Пользовательский шрифт в раскадровке?
У меня есть шрифт, добавленный в мой проект iOS. Он находится в проекте и копируется при сборке проекта. Он кажется допустимым шрифтом и будет отображаться, если я перечислю все шрифты на устройстве через приложение. У меня есть plist настроен правильно, чтобы включить шрифт. Кажется, я не могу заставить найти, чтобы использовать его в своих текстовых элементах управления, кнопках и т. д. В разделе раскадровки Xcode 4.2. Кроме того, он не позволяет мне вводить имя шрифта, это заставляет меня использовать диалоговое окно шрифта. Я попытался установите этот шрифт в систему, но не могу показаться, чтобы получить его, чтобы показать в этом списке. Мне нужно сделать это в коде, или я могу сделать это через интерфейс раскадровки?
обратите внимание, что я могу заставить это работать в коде, но было бы гораздо удобнее сделать это через раскадровку.
7 ответов:
UPDATE: Xcode 6 Interface Builder теперь позволяет выбирать пользовательские шрифты и правильно отображать их во время разработки.
я знаю, что этот вопрос довольно старый, но я изо всех сил пытался найти простой способ легко указать пользовательский шрифт в раскадровке (или Построителе интерфейса) для iOS 5, и я нашел довольно удобное решение.
во-первых, убедитесь, что вы добавили шрифт в проект после в этом уроке. Также помните, что Пользовательский шрифт UINavigationBar, UITabBar и UISegmentedControl можно указать с помощью
setTitleTextAttributes:
метод UIAppearance proxy.добавьте следующие категории в проект для UIButton, UITextField, UILabel и любого другого компонента, который нуждается в пользовательском шрифте. Категории просто реализуют новое свойство
fontName
который изменяет текущий шрифт элемента при сохранении размера шрифта.чтобы указать шрифт в раскадровке, просто выберите нужный элемент (метка, кнопка, textview и т. д.) и добавить Определенные Пользователем Атрибуты Во Время Выполнения С Путь К Ключу значение fontName типа строка и значение с именем вашего пользовательского шрифта.
и это все, вам даже не нужно импортировать категории. Таким образом, вам не нужен выход для каждого компонента пользовательского интерфейса, который требует пользовательского шрифта, и вам не нужно его кодировать вручную.
примите во внимание, что шрифт не будет отображаться в раскадровке, но вы увидите его при запуске на вашем устройстве или симуляторе.
от Xcode6. 0, как Xcode6.0 релиз Примечание:
Interface Builder отображает встроенные пользовательские шрифты iOS во время разработки, давая более точный предварительный просмотр того, как будет выглядеть готовое приложение, с правильными размерами.
вы можете установить шрифт метки в раскадровке.Вы можете сделать так, как следовать
- получить пользовательский файл шрифта(.ТТФ.ttc)
импорт файлов шрифтов в Xcode проект
на app-info.файл plistдобавить ключ с именем шрифты, предоставляемые приложением. это тип массива, добавьте все имя файла шрифта в массив,Примечание:включая расширение файла.
- в раскадровке перетащите UILabel в интерфейс, выберите метку и перейдите к Инспектора Атрибут,нажмите кнопку правая кнопка значка шрифт выберите область. во всплывающей панели выберите шрифт до Custom и выберите семья из вас встроенное имя шрифта.
судьи
Это ошибка в 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, добавив имена файлов шрифтов для информации.плист, кажется, больше не является требованием.