【发布时间】:2012-06-20 11:42:53
【问题描述】:
假设您想要 UIFont 的特定字体。 你怎么知道它叫什么?
例如如果您想使用此代码:
[someUILabelObject setFont:[UIFont fontWithName:@"American Typewriter" size:18]];
您从哪里复制“美国打字机”这个词组。 Xcode中有头文件吗?
更新
还发现this很方便。
【问题讨论】:
假设您想要 UIFont 的特定字体。 你怎么知道它叫什么?
例如如果您想使用此代码:
[someUILabelObject setFont:[UIFont fontWithName:@"American Typewriter" size:18]];
您从哪里复制“美国打字机”这个词组。 Xcode中有头文件吗?
更新
还发现this很方便。
【问题讨论】:
在调试器中作为 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 月 - 更新 “Custom Fonts with Xcode”的新 swift-y 参考 - 由 Chris Ching 撰写。我不得不更新,因为这是一个很有价值的帖子,它结合了所有缺失的部分以在项目中使用自定义字体。
【讨论】:
UIFont 的 documentation 对此非常清楚:
您可以使用
fontNamesForFamilyName:方法来检索 给定字体系列的特定字体名称。 (注意:是类方法)
你可以像这样得到姓氏:
NSArray *familyNames = [UIFont familyNames];
【讨论】:
试试
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);
}];
}];
【讨论】:
label.font = [UIFont fontWithName:@"HelveticaNeue-Light" size:17];
【讨论】:
我做了一个库来解决这个问题:
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)
【讨论】:
这是您获取项目中所有字体名称的方法。就这样……3行代码
NSArray *fontFamilies = [UIFont familyNames];
for (int i=0; i<[fontFamilies count]; i++)
{
NSLog(@"Font: %@ ...", [fontFamilies objectAtIndex:i]);
}
【讨论】: