当前位置: 首页 > 知识库问答 >
问题:

什么字体保证在iOS设备上可用?

巩才捷
2023-03-14

我在想什么字体是保证在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]。该字体实际上不存在,因此返回的UIFont为nil。

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

我可以通过使用正确的字体名称@“helvetica-bold”(需要连字符)来修复这个问题,但我担心选择字体和使用这种语法时,设备可能没有选定的字体而崩溃。

由于使用dictionaryWithObjectsAndKeys的旧方法工作得很好,而且显然可以处理无字体,所以我倾向于只使用该方法,晚上睡个好觉。

我当然可以使用逻辑来检查零字体并采取步骤来处理,但似乎是不必要的浪费时间,因为旧方法处理了这种情况。

因为不知道未来的设备上可能会使用什么字体,所以总是使用旧的语法会更好吗?

在这个问题上对苹果有些失望。

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

共有1个答案

闾丘永春
2023-03-14

您可以使用

NSArray *familyNames = [UIFont familyNames];

则对于数组中的每个familyname,您可以看到可用的字体名称为:

 NSArray *fontNames = [UIFont fontNamesForFamilyName:familyName];

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

 类似资料:
  • 问题内容: 我的html主体中有一个巨大的块,其中占80%,并且我的下部还有一个页脚。 页脚中的文本也有80%,如果我在PC上测试它是相等的,但是如果我在移动设备上对其进行测试,则页脚中的文本非常小,无法读取。 这怎么可能?解释是什么,如何避免? 我的主要文字: 我的页脚: 我的CSS: 问题答案: 您是否已将 视口元标记添加 到文档中? 如果没有,请将其添加到您的头部: 移动浏览器自然会尝试缩小

  • 本文向大家介绍设置字体时为什么建议设置替换字体?相关面试题,主要包含被问及设置字体时为什么建议设置替换字体?时的应答技巧和注意事项,需要的朋友参考一下 这是由于网站用户的浏览设备不同,可能并不支持或没有安装你所设置的字体。 这时候就会自动使用替换字体来对网页进行一个展示。 设置替换字体可以尽可能保证所有用户的浏览体验。

  • Meta:- IOS仿真器设备v10.3 Appium java-client V5.0.0 beta8 硒v3.4.0 实际上,我试图在设备中使用自动化设置。我尝试了以下代码,它在设备上运行良好,而在上抛出异常: 例外情况: WebDriverException:方法尚未实现(警告:服务器未提供任何stacktrace信息) 当我尝试使用JavascriptExecutor作为: Unsuppo

  • 在react native中,我设计了一个示例,当我在不同的IOS设备中检查它时,这里是我的代码: 当我签入iphone-6和5s字体问题即将到来,任何人帮助我解决这个问题,如何设置不同IOS设备的字体大小在反应原生任何帮助很多通知

  • 我最近对我已经在应用商店上的应用做了一些修改,几天后,我发现我的新版本因为在发布时崩溃而被拒绝。这很奇怪,因为我在ipad air、iphone6和iphone5上测试了它,它在所有3上都可以工作。我从苹果公司得到了以下崩溃日志,我想知道是否有人能帮我破译错误在哪里,因为这是我第一次遇到如此严重的错误。

  • 问题内容: 我正在为iPhone开发一个快速的应用程序。我的应用程序中有一个模式视图,我只想使用纵向视图。 我的问题是,如何以编程方式强制手机不允许旋转?换句话说,我正在寻找的代码不允许以横向模式显示模式视图(打开人像旋转锁定)。 这仅用于1模态视图,因此我无法关闭整个应用程序的旋转,否则我将完全禁用旋转。 我在这里的研究中找到了代码, 但如果有帮助,它在目标C中。谢谢! 问题答案: 您可以将这些

  • 我正在为iPhone开发一个swift应用程序。我的应用程序中有一个模态视图,我只想在纵向视图中。 我的问题是,如何通过编程强制手机不允许旋转?换句话说,我正在寻找不允许在横向模式下显示模式视图的代码(打开纵向旋转锁定)。 这只是一个模态视图,所以我不能关闭整个应用程序的旋转,否则我会完全禁用旋转。 我在这里的研究中发现了代码,但它是在目标C中,以防有所帮助。谢谢

  • 问题内容: 是否有@media查询仅针对运行iOS的设备? 例如: 这还会以这些设备宽度改变Android设备上页面的行为吗? 问题答案: 是的你可以。 YMMV。 之所以有效,是因为仅 Safari Mobile 实现了 请注意,在IE中不起作用。IE将跳过以上两个块。 警告:未来几年,iOS可能会在任何新的iOS版本中删除对此的支持。