UIFont fontWithName字体名称

70

假设你想要在UIFont中使用特定的字体,那么你如何知道它被称为什么名称?

例如,如果你想要使用以下代码:

[someUILabelObject setFont:[UIFont fontWithName:@"American Typewriter" size:18]];

你是从哪里复制了精确的短语“American Typewriter”?在Xcode中是否有头文件?

更新

还发现这个很方便。

6个回答

244

以下内容可能对您作为调试器中的快速解决方案很有用:

(lldb) po [UIFont fontNamesForFamilyName:@"Helvetica Neue"]

(id) $1 = 0x079d8670 <__NSCFArray 0x79d8670>(
HelveticaNeue-Bold,
HelveticaNeue-CondensedBlack,
HelveticaNeue-Medium,
HelveticaNeue,
HelveticaNeue-Light,
HelveticaNeue-CondensedBold,
HelveticaNeue-LightItalic,
HelveticaNeue-UltraLightItalic,
HelveticaNeue-UltraLight,
HelveticaNeue-BoldItalic,
HelveticaNeue-Italic
)

2018年11月 - 更新 Chris Ching的"使用Xcode自定义字体"新教程发布,这是一个很有价值的帖子,介绍了使用自定义字体的新方法和所有缺失部分。


非常有用,我使用了:NSLog(@“%@”,[UIFont fontNamesForFamilyName:“Helvetica Neue”]); - David Douglas
你可能会对2018年11月更新链接感兴趣!“使用Xcode自定义字体” - andreas-supersmart
@andreas-supersmart,你的回答在7年后仍然支持我 :-). 谢谢。 - Dinith Minura

6

UIFont的文档对此非常明确:

您可以使用fontNamesForFamilyName:方法检索给定字体系列的特定字体名称。(注意:这是一个类方法)

您可以按如下方式获取字体系列名称:

NSArray *familyNames = [UIFont familyNames];

3
label.font = [UIFont fontWithName:@"HelveticaNeue-Light" size:17];

2
虽然这段代码示例可能回答了问题,但最好在您的答案中包含一些必要的解释。就目前而言,这个答案对未来的读者几乎没有任何价值。 - oɔɯǝɹ
不同意之前评论者的观点 - 这正是我所需要的。 - codehearted

3

尝试

NSArray *familyNames = [UIFont familyNames];
[familyNames enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop){
    NSLog(@"* %@",obj);
    NSArray *fontNames = [UIFont fontNamesForFamilyName:obj];
    [fontNames enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop){
        NSLog(@"--- %@",obj);
    }];
}];

3
我制作了一个库来解决这个问题:
https://github.com/Nirma/UIFontComplete
所有字体都被表示为系统Font枚举,并且该库还详细介绍了如何在自定义字体中使用它。基本上是这样的:
let font = UIFont(name: "Arial-BoldItalicMT", size: 12.0)

替代方法为以下两种之一:
let font = UIFont(font: .arialBoldItalicMT, size: 12.0)

或者这个:
let myFont = Font.helvetica.of(size: 12.0)

2
这是获取项目中所有字体名称的方法。只需要3行代码即可完成。
NSArray *fontFamilies = [UIFont familyNames];

    for (int i=0; i<[fontFamilies count]; i++)
    {
        NSLog(@"Font: %@ ...", [fontFamilies objectAtIndex:i]);
    }

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