69

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

例如,如果您想使用此代码:

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

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

更新

也发现这个很方便。

4

6 回答 6

242

作为调试器中的 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 月 - 更新“使用 Xcode 的自定义字体 ”的新 swift-y 参考- 由 Chris Ching。我不得不更新,因为这是一个很有价值的新方法,结合所有缺失的部分在项目中使用自定义字体。

于 2012-07-31T13:36:45.283 回答
6

文档对此UIFont非常清楚:

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

你可以得到这样的姓氏:

NSArray *familyNames = [UIFont familyNames];
于 2012-06-18T13:32:55.560 回答
3
label.font = [UIFont fontWithName:@"HelveticaNeue-Light" size:17];
于 2013-07-18T13:51:30.997 回答
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);
    }];
}];
于 2013-10-29T22:26:53.077 回答
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)
于 2017-05-11T09:20:00.793 回答
2

这是您在项目中获取所有字体名称的方式。就是这样...... 3行代码

NSArray *fontFamilies = [UIFont familyNames];

    for (int i=0; i<[fontFamilies count]; i++)
    {
        NSLog(@"Font: %@ ...", [fontFamilies objectAtIndex:i]);
    }
于 2014-02-07T03:46:36.093 回答