【问题标题】:Non-System fonts not working on iOS6非系统字体在 iOS6 上不起作用
【发布时间】:2014-02-04 09:58:52
【问题描述】:

我以前从未遇到过这个问题。但是除了系统字体之外,我无法显示任何字体。我想使用 helvetica,但这不起作用,我尝试将我的 UILabel 设置为 Farah 只是为了看看它是否会起作用而它不起作用。但是,如果我在模拟器中运行(使用 iOS7),那么它似乎工作正常。我试过在情节提要上设置字体。然后尝试以编程方式设置它,

self.titleLabel.font = [UIFont fontWithName:@"Farah" size:25];

不允许使用非系统字体的新 Xcode 有什么变化吗?

【问题讨论】:

  • 字体文件是否正确安装在资源包中? Info.plist 是否正确引用了字体文件?您是否使用正确的字体名称?

标签: ios ios6 uifont


【解决方案1】:

fontWithName的参数必须是字体的真实名称,而不是文件名。

如果你用 Mac Font Book 打开你的 ttf 文件,你会直接在窗口顶部看到它的名字。

更多信息,请查看this

【讨论】:

    【解决方案2】:

    获得正确的字体名称并不容易。运行此代码以了解可用名称:

    for (NSString* s in [UIFont familyNames])
        NSLog(@"%@: %@", s, [UIFont fontNamesForFamilyName:s]);
    

    当然,如果设置self.titleLabel的特性不起作用,你还应该确保self.titleLabel不为nil。

    【讨论】:

      【解决方案3】:

      将所有非系统字体添加到您的应用程序并包含到“应用程序提供的字体”部分的 .plist 文件中。 在您可以在应用程序中使用字体之后:[UIFont fontWithName: @"TitilliumText25L-400wt" size:14];(将“TitilliumText25L-400wt”替换为相应的字体名称)。

      附言如果您在检测真实字体名称时遇到问题,请使用 FontBook 应用程序或 下面的代码 sn-p 会显示您的应用程序的所有可用字体。

      for(NSString* family in [UIFont familyNames]) {
          NSLog(@"%@", family);
          for(NSString* name in [UIFont fontNamesForFamilyName: family]) {
              NSLog(@"  %@", name);
          }
      }
      

      【讨论】:

      • 好的,所以 iOS6 不附带 Farrow 或 HelveticaNeue-Thin。这就是为什么它不起作用。我切换到 HelveticaNeue-Light,它可以工作。我没有尝试导入任何 ttf 文件或任何东西。我只是想在 IB 中选择字体并在没有发生的应用程序上查看它。这是因为iOS6没有加载HelveticaNeue-Thin
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-08
      • 2017-05-08
      • 2017-01-05
      • 2016-04-18
      相关资源
      最近更新 更多