我有一个字体添加到我的iOS项目。它在项目中,并在项目构建时复制。它似乎是有效的字体,如果我通过该应用列出设备上的所有字体,它将显示出来。我已经正确设置了plist以包含字体。我似乎找不到在Xcode 4.2的故事板部分的文本控件,按钮等中使用它的发现。此外,它似乎不允许我输入字体名称,它迫使我使用字体对话框。我也尝试在系统中安装此字体,但似乎无法使其显示在此列表中。我是否仅需要用代码执行此操作,还是可以通过情节提要界面执行此操作?
请注意,我可以在代码中使用它,但是通过情节提要进行此操作会更加方便。
我知道这个问题已经很老了,但是我一直在努力寻找一种简单的方法来轻松为iOS 5在Storyboard(或Interface Builder)中指定自定义字体,因此我找到了一个非常方便的解决方案。
首先,请遵循本教程,确保已将字体添加到项目中。还请记住,可以使用UIAppearance代理的setTitleTextAttributes:
方法来指定UINavigationBar,UITabBar和UISegmentedControl自定义字体。
将以下类别添加到项目中,用于UIButton,UITextField,UILabel以及需要自定义字体的任何其他组件。这些类别仅实现了一个新属性fontName
,该属性可以更改元素的当前字体,同时保持字体大小。
要指定在故事板的字体,只需选择所需的元素(标签,按钮,TextView的,等等),并添加一个用户自定义运行属性与关键路径设置为的fontName类型的字符串和值与您的自定义字体的名称。
就是这样,您甚至不需要导入类别。这样,您不需要为每个需要自定义字体的UI组件都提供一个插座,也不需要手动对其进行编码。
考虑到该字体不会在Storyboard中显示,但是在设备或模拟器上运行时会看到该字体。
UIButton + TCCustomFont.h:
#import <UIKit/UIKit.h>
@interface UIButton (TCCustomFont)
@property (nonatomic, copy) NSString* fontName;
@end
UIButton + TCCustomFont.m:
#import "UIButton+TCCustomFont.h"
@implementation UIButton (TCCustomFont)
- (NSString *)fontName {
return self.titleLabel.font.fontName;
}
- (void)setFontName:(NSString *)fontName {
self.titleLabel.font = [UIFont fontWithName:fontName size:self.titleLabel.font.pointSize];
}
@end
UILabel + TCCustomFont.h:
#import <UIKit/UIKit.h>
@interface UILabel (TCCustomFont)
@property (nonatomic, copy) NSString* fontName;
@end
UILabel + TCCustomFont.m:
#import "UILabel+TCCustomFont.h"
@implementation UILabel (TCCustomFont)
- (NSString *)fontName {
return self.font.fontName;
}
- (void)setFontName:(NSString *)fontName {
self.font = [UIFont fontWithName:fontName size:self.font.pointSize];
}
@end
UITextField + TCCustomFont.h:
#import <UIKit/UIKit.h>
@interface UITextField (TCCustomFont)
@property (nonatomic, copy) NSString* fontName;
@end
UITextField + TCCustomFont.m:
#import "UITextField+TCCustomFont.h"
@implementation UITextField (TCCustomFont)
- (NSString *)fontName {
return self.font.fontName;
}
- (void)setFontName:(NSString *)fontName {
self.font = [UIFont fontWithName:fontName size:self.font.pointSize];
}
@end
如果由于fontName
未指定属性而遇到运行时错误,只需在项目设置中的“其他链接器标志”-all_load
下添加标志,以强制链接器包括类别。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句