我目前正在开发一个使用"ChalkboardSE-Regular"字体的应用程序,我的部署目标是4.0+.此字体在4.1中不可用,但在4.3中受支持.检查字体是否存在的最佳方法是什么,如果不存在,请在<4.1版本的iOS上使用其他支持的字体.[UIFont familyName]返回这些字体的列表"Chalkboard SE"
提前致谢!
Ť
Ste*_*HHH 110
[UIFont familyName]
支持回iPhone OS 2.0(2.0之前,iPhone或iPod touch上不允许第三方应用),所以我会用它来检查当前设备上是否存在字体系列,如果不存在存在,为该版本的iOS使用合适的后备字体.这是John Gruber 2007年原版iPhone中的iPhone字体列表(与当天的Mac OS X中的字体形成对比).我没有检查过它们,但我检查的iOS字体仍然在iOS 5中:
以下是使用示例[UIFont familyName]
:
NSLog (@"Font families: %@", [UIFont familyNames]);
Run Code Online (Sandbox Code Playgroud)
这将生成如下列表:
字体系列:( Thonburi,"Snell Roundhand","Academy Engraved LET",等等.
一旦知道了姓氏,就可以使用UIFont
类方法fontNamesForFamilyName
获取NSArray中所有字体的名称.例如:
NSLog (@"Courier New family fonts: %@", [UIFont fontNamesForFamilyName:@"Courier New"]);
Run Code Online (Sandbox Code Playgroud)
这将产生一个这样的列表:
Courier New系列字体:( CourierNewPSMT,"CourierNewPS-BoldMT","CourierNewPS-BoldItalicMT","CourierNewPS-ItalicMT")
以下示例代码打印当前设备上每个系列中每种字体的列表:
NSArray *fontFamilies = [UIFont familyNames];
for (int i = 0; i < [fontFamilies count]; i++)
{
NSString *fontFamily = [fontFamilies objectAtIndex:i];
NSArray *fontNames = [UIFont fontNamesForFamilyName:[fontFamilies objectAtIndex:i]];
NSLog (@"%@: %@", fontFamily, fontNames);
}
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请查看iOS Developer Reference文档,了解UIFont
类方法familyNames 和fontNamesForFamilyName : .
Ale*_*ano 40
如果您使用Swift,您可以打印所有字体(见下文).您还可以检查字体是否存在.
for family in UIFont.familyNames {
print("\(family)")
for name in UIFont.fontNames(forFamilyName: family) {
print(" \(name)")
}
}
Run Code Online (Sandbox Code Playgroud)
mat*_*att 14
此字体在4.1中不可用,但在4.3中受支持.检查字体是否存在的最佳方法是什么
只需要以通常的方式使用字体UIFont* f = [UIFont fontWithName:... size:...];
.如果字体不可用,则result(f
)将为nil.
(保证字体可用性的一种方法是将其包含在应用程序包中...)
忘记那些for循环,这是查看iOS支持的字体的最简单方法.
只需在操场上运行以下任何一项即可.
输入
dump(UIFont.familyNames)
Run Code Online (Sandbox Code Playgroud)
产量
? 75 elements
- "Copperplate"
- "Heiti SC"
- "Kohinoor Telugu"
...
Run Code Online (Sandbox Code Playgroud)
输入
dump(UIFont.familyNames.flatMap { UIFont.fontNames(forFamilyName: $0) })
Run Code Online (Sandbox Code Playgroud)
产量
? 248 elements
- "Copperplate-Light"
- "Copperplate"
- "Copperplate-Bold"
...
Run Code Online (Sandbox Code Playgroud)
输入
dump(UIFont.fontNames(forFamilyName: "Helvetica Neue"))
Run Code Online (Sandbox Code Playgroud)
产量
? 14 elements
- "HelveticaNeue-Italic"
- "HelveticaNeue-Bold"
- "HelveticaNeue-UltraLight"
- "HelveticaNeue-CondensedBlack"
...
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
51118 次 |
最近记录: |