UIFont的fontWithName方法返回nil

11

这段代码返回的是空的字体。

我已经将Open Sans字体文件添加到项目文件夹中。

我漏了什么?

UIFont *font = [UIFont fontWithName:@"OpenSans-Bold" size:fontSize];
    if (font)
    {
        [str addAttribute:NSFontAttributeName value:[UIFont fontWithName:font size:fontSize] range:NSMakeRange(location, length)];
        label.attributedText = str;
    }

在这里输入图像描述

1个回答

14
首先,请确认您的.ttf文件是否在您的.plist文件中注册了? 其次,请确认您的字体是否已添加到“Copy Bundle Resources”中?(在Target-> Build Phases下) 接下来,尝试使用此代码列出所有可用字体及其名称。这样,您就可以确保使用正确的字体标识符。
for (NSString* fontFamily in [UIFont familyNames]) {
    NSArray *fontNames = [UIFont fontNamesForFamilyName:fontFamily];
    NSLog (@"%@: %@", fontFamily, fontNames);
}

编辑

由于这个答案有些旧,我更新了对应的 Swift 3.0 答案:

_ = UIFont.familyNames.map {
    let fontNames = UIFont.fontNames(forFamilyName: $0)
    print("Font Family: \($0), Font Names: \(fontNames)\n")
}

1
谢谢大家!我还使用了这个链接。 - Roei Nadam
1
谢谢,你提到了一个在回答问题时没有人注意到的问题!第二个问题是你的字体是否添加到“复制包资源”中?(在目标->构建阶段下) - Mansour

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接