【问题标题】:What fonts are guaranteed to be available on an iOS device?iOS 设备上保证可以使用哪些字体?
【发布时间】:2013-09-02 10:04:00
【问题描述】:

我想知道在 iOS 设备上保证可以使用哪些 字体

我用过这个,效果很好:

[[UITabBarItem appearance] setTitleTextAttributes:
 [NSDictionary dictionaryWithObjectsAndKeys:
  [UIColor grayColor],      UITextAttributeTextColor,
  [UIColor lightGrayColor], UITextAttributeTextShadowColor,
  [NSValue valueWithUIOffset:UIOffsetMake(1, 1)], UITextAttributeTextShadowOffset,
  [UIFont fontWithName:@"Helvetica Bold" size:0.0], UITextAttributeFont,
  nil]
                                         forState:UIControlStateNormal];

然后我认为将新语法用于字典可能会更好、更方便,所以我尝试了这个:

[[UITabBarItem appearance] setTitleTextAttributes:@{
                             UITextAttributeFont : [UIFont fontWithName:@"Helvetica-Bold" size:0.0f],
                        UITextAttributeTextColor : [UIColor grayColor],
                  UITextAttributeTextShadowColor : [UIColor lightGrayColor],
                 UITextAttributeTextShadowOffset : [NSValue valueWithUIOffset:UIOffsetMake(1.0f, 1.0f)],
 } forState:UIControlStateNormal];

它确实有效,但我担心一些问题。

最初,我尝试过这种字体,[UIFont fontWithName:@"Helvetica Bold" size:0.0]。该字体实际上不存在,因此返回的 UIFontnil

使用 dictionaryWithObjectsAndKeys 的旧方法可以很好地处理 nil 字体,但新的 @{} 语法会使应用程序崩溃。

我可以通过使用正确的字体名称来解决这个问题,@"Helvetica-Bold"(需要一个连字符),但我担心选择字体并使用此语法(如果有)设备可能没有可用的选定字体并崩溃。

由于使用 dictionaryWithObjectsAndKeys 的旧方法可以正常工作,并且显然可以处理 nil 字体,因此我倾向于只使用它并在晚上轻松入睡。

我当然可以输入逻辑来检查 nil 字体并采取措施来处理它,但似乎是在浪费时间,因为旧方法可以处理这种情况。

总是使用旧语法会更好吗,因为不知道未来设备上可能会使用哪些字体?

Apple 在这个问题上有些失望。

有什么想法、意见或建议吗?

【问题讨论】:

标签: ios objective-c fonts nsdictionary


【解决方案1】:

你可以使用

NSArray *familyNames = [UIFont familyNames];

那么对于数组中的每个familyName,你可以看到可用的fontNames为:

 NSArray *fontNames = [UIFont fontNamesForFamilyName:familyName];

这将为您提供设备上可用的字体名称列表。

【讨论】:

  • 我不认为这是他要问的。我想他想知道一种在所有设备中普遍使用的字体。
  • 我正在寻找始终保证在任何运行我的应用程序的设备上始终可用的东西,以便我可以安全地使用新的字典语法@{}。由于这可能无法保证,我想我可能会重新使用带有 dictionaryWithObjectsAndKeys 的旧格式。
猜你喜欢
  • 2011-05-12
  • 1970-01-01
  • 2021-09-22
  • 2011-10-01
  • 2011-12-26
  • 1970-01-01
  • 2011-07-23
  • 2013-12-08
  • 1970-01-01
相关资源
最近更新 更多