【发布时间】:2011-12-26 19:34:39
【问题描述】:
我已阅读[UIFont familyNames] 提供的可用字体系列,但我在不同的设备上有各种列表(但使用相同的 iOS 版本)。有人能告诉我,上面的方法列出的字体是否包括其他已安装应用程序提供的自定义字体,或者这些字体是否只是 iOS 附带的字体?
【问题讨论】:
标签: objective-c ios cocoa-touch fonts
我已阅读[UIFont familyNames] 提供的可用字体系列,但我在不同的设备上有各种列表(但使用相同的 iOS 版本)。有人能告诉我,上面的方法列出的字体是否包括其他已安装应用程序提供的自定义字体,或者这些字体是否只是 iOS 附带的字体?
【问题讨论】:
标签: objective-c ios cocoa-touch fonts
是的,它会显示您应用中的所有字体,包括您添加的自定义字体。这是列出所有字体的较短代码:
for (NSString *familyName in [UIFont familyNames]){
NSLog(@"Family name: %@", familyName);
for (NSString *fontName in [UIFont fontNamesForFamilyName:familyName]) {
NSLog(@"--Font name: %@", fontName);
}
}
for familyName:AnyObject in UIFont.familyNames() {
print("Family Name: \(familyName)")
for fontName:AnyObject in UIFont.fontNamesForFamilyName(familyName as! String) {
print("--Font Name: \(fontName)")
}
}
for familyName:String in UIFont.familyNames {
print("Family Name: \(familyName)")
for fontName:String in UIFont.fontNames(forFamilyName: familyName) {
print("--Font Name: \(fontName)")
}
}
【讨论】:
这是列出所有字体的正确 sn-p:
// List all fonts on iPhone
NSArray *familyNames = [[NSArray alloc] initWithArray:[UIFont familyNames]];
NSArray *fontNames;
NSInteger indFamily, indFont;
for (indFamily=0; indFamily<[familyNames count]; ++indFamily)
{
NSLog(@"Family name: %@", [familyNames objectAtIndex:indFamily]);
fontNames = [[NSArray alloc] initWithArray:
[UIFont fontNamesForFamilyName:
[familyNames objectAtIndex:indFamily]]];
for (indFont=0; indFont<[fontNames count]; ++indFont)
{
NSLog(@" Font name: %@", [fontNames objectAtIndex:indFont]);
}
}
【讨论】:
您可以在此处找到 iOS 中不需要任何额外类即可构建的所有嵌入式字体的列表:List Of Available iOS Fonts
【讨论】:
Gruber 不久前发布了包含字体的链接:iOS Fonts
编辑:他链接的网站是iosfonts.com
【讨论】:
我相信这些只是 iOS 附带的字体。您需要找到相应的 .otf 或 .ttf 文件并将该文件包含在您的项目资源中的任何自定义字体。
之所以这么说是因为,我想使用HelveticaNeue-UltraLight 字体。它在 iOS 中列出,您可以在 Xcode 中看到此字体选项。但是在选择后什么也没有发生。为此,我必须执行上述操作并放入 HelveticaNeue-UltraLight 字体文件。
【讨论】:
请试试这个代码:https://github.com/zynga/FontLabel/
检查可用的 iOS 字体:
for (indFamily=0; indFamily<[familyNames count]; ++indFamily){
NSLog(@"Family name: %@", [familyNames objectAtIndex:indFamily]);
fontNames = [[NSArray alloc] initWithArray:[UIFont fontNamesForFamilyName:[familyNames objectAtIndex:indFamily]]];
for (indFont=0; indFont<[fontNames count]; ++indFont){
NSLog(@" Font name: %@", [fontNames objectAtIndex:indFont]);
}
}
[fontNames release];
【讨论】: