从同一系列添加多个字体类型到Xcode 6

时间:2014-10-21 15:58:02

标签: ios fonts uilabel plist xcode6

我正在尝试向Xcode 6添加多种字体。问题是当同一系列的多个样式例如:

“门施粗体” “门施薄”

当我打开这些字体时,我得到与原始字体文件相同的名称,如下所示:

Mensch-Bold

Mensch-Thin

当我添加这些字体时,用字体等更新.pList文件,我只能让“Mensch”工作。我不能得到任何子系列,这是因为尽管它们有变化,它们都被命名为“Mensch”。

有解决方法吗?你知道如何安装相同字体系列的多种字体样式吗?

1 个答案:

答案 0 :(得分:0)

可能你已经安装了两个家庭。 Xcode6在“属性”选项卡中显示自定义字体,但如果您有来自同一字体系列的多个样式,则只显示其中一个。您可以使用子类来实现此功能。

首先使用以下代码查找已安装的字体名称:(Adding custom fonts to iOS app finding their real names

static void dumpAllFonts() {
    for (NSString *familyName in [UIFont familyNames]) {
        for (NSString *fontName in [UIFont fontNamesForFamilyName:familyName]) {
            NSLog(@"%@", fontName);
        }
    }
}

然后添加一个子类,并使用从前面的代码中获得的字体名称。 以下示例适用于UILabel。

@interface CustomFontLabel : UILabel

@end


@implementation CustomFontLabel

- (void)awakeFromNib {
    [super awakeFromNib];
    self.font = [UIFont fontWithName:@"Mensch" size:self.font.pointSize];
}

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        self.font = [UIFont fontWithName:@"Mensch" size:self.font.pointSize];
    }
    return self;
}

@end

在此之后,您可以从xib文件中将标签的类更改为CustomFontLabel。