iOS4运行时如何检查字体是否存在

7

我希望在运行时检查设备(iPhone / iPad)上是否存在字体?

有没有办法做到这一点?


为什么要踩这个问题?这似乎是一个合理的问题... - Chris Eberle
谢谢,有没有办法知道为什么? - shannoga
2个回答

4

您可以尝试使用UIFontfontWithName方法,我感觉它应该会对在iOS中不存在的字体返回nil

+ (UIFont *)fontWithName:(NSString *)fontName size:(CGFloat)fontSize

有趣的方法,但这样你就是“盲目尝试”。如果字体存在,那么做这件事情会更容易,因为iOS上可用的字体比不可用的要多。 - Moshe

3

您可以使用此代码获取所有可用字体的列表:

// 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]);
  }
  [fontNames release];
}
[familyNames release];

基于这段代码,您可以轻松构建一个包含所有字体名称的NSArray,然后使用它来验证您的字体是否存在,或者任何适合您的应用程序的工作流程。

源代码


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接