UIFont fontWithName字体名称


68

假设您需要UIFont的特定字体。你怎么知道它叫什么?

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

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

您从哪里复制确切的短语“美国打字机”。Xcode中有头文件吗?

更新

也发现这个方便。

Answers:


240

作为调试器中的Quick Win,您可能会很感兴趣:

(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”]);
大卫·道格拉斯

您可能对上面的2018年11月更新链接感兴趣!“使用Xcode定制字体”
andreas-supersmart

@ andreas-supersmart,您的回答将在7年后支持我:-)。感谢
Dinith Minura

6

文档UIFont是对这个很清楚:

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

您可以这样获得姓氏:

NSArray *familyNames = [UIFont familyNames];

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
label.font = [UIFont fontWithName:@"HelveticaNeue-Light" size:17];

2
尽管此代码示例可能会回答问题,但最好在回答中包含一些基本解释。就目前而言,这个答案对未来的读者几乎没有任何价值。
oɔɯǝɹ

不同意以前的评论者-这就是我需要的。
codehearted

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]);
    }
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.