【问题标题】:Unable to set custom font for the UILabel in XCode无法在 XCode 中为 UILabel 设置自定义字体
【发布时间】:2014-09-11 19:40:53
【问题描述】:

我无法在 XCode 中为 UILabel 设置自定义字体。

这是我尝试过的:

  • 下载“JennaSue”字体 -- http://www.dafont.com/jenna-sue.font

  • 打开“支持文件”文件夹下的“app-info.plist”

  • 在列表中添加新行,键为“应用程序提供的字体”

  • 在这个数组中添加“JennaSue.ttf”

  • 在代码中这样使用它:

self.someLabel.font = [UIFont fontWithName:@"JennaSue" size:14];

什么也没有发生——默认字体是可见的。

为什么?我究竟做错了什么?我该如何解决?

【问题讨论】:

  • 试过 self.someLabel.font = [UIFont fontWithName:@"Jenna-sue" size:14]; ?
  • @user3781721 说我认为你忘记了 .ttf 扩展名
  • 确保您已将字体添加到您的 target 并将 Postscript 名称传递给 fontWithName:size:(您可以在字体中找到它预订应用程序)。另请参阅此相关答案:stackoverflow.com/questions/24605844/…
  • 您能否检查您包含的 ttf 文件是否存在于您的“targets>buildPhases> 编译源”中。.有时在导入时对该文件的引用会丢失
  • @Geet 是的,没有这样的文件。我已经添加了它,但没有任何反应

标签: ios objective-c cocoa-touch uifont info.plist


【解决方案1】:

确保您的字体在捆绑资源中。由于某种原因,Xcode 大部分时间都没有正确导入自定义字体:

我的字体工作正常:

示例代码:here

【讨论】:

  • 我还必须将它添加到 Info.plist 并添加:应用程序提供的字体:文件名
【解决方案2】:
  1. 转到您项目的info.plist 文件,
  2. 右键选择Add row
  3. 在新行中输入Fonts provided by application
  4. 键入所需的字体名称作为此键的项目。
  5. 将字体文件拖放到项目中,
  6. 将其应用于您想要的文本:

someLabel.font = [UIFont fontWithName:@"JennaSue" size: 12.0];

我认为你错过了上面的第 5 步。

更新:在执行第5步时,记得勾选将实际文件复制到项目目录的标记:

记得按“command+alt+shift+K”清理你的项目(IRRC!) 然后去你的

然后转到您项目的构建阶段,并确保您可以在资源文件中看到您的.ttf 文件:

附:我现在不在我的 Mac 上,所以我使用了来自this tutorial 的屏幕截图。这就是为什么我为您的问题将不必要的行显示为灰色。

【讨论】:

  • 不,我已将此文件放在“支持文件”文件夹中
  • 嗯,好的。但要确保 Xcode 也确实收到并消化了文件!因为有时识别添加的文件只是废话。我正在更新我的答案。
【解决方案3】:

检查此代码:

 NSArray *names = [UIFont familyNames];
 NSLog(@"Font FamilyNames : ");
 for (NSString *name in names) {
     NSLog(@"Font Family:  %@",name);
     NSArray *fontFaces = [UIFont fontNamesForFamilyName:name];
     for (NSString *fname in fontFaces) {
          NSLog(@"   %@",fname);
     }
  }

  self.someLabel.font = [UIFont fontWithName:@"use correct name" size:self.someLabel.font.pointSize];

并使用与 NSLog 打印的相同名称。

【讨论】:

    【解决方案4】:

    将自定义字体添加到 Xcode 后,不要忘记将字体添加到 plist。 Project settings > Info > Custom IOS target properties

    添加属性Fonts provided by application 并输入您的自定义字体(字体文件的文件名)。 然后您可以使用该代码示例 self.someLabel.font = [UIFont fontWithName:@"JennaSue" size:14];

    注意:确保在代码中使用正确的字体名称。为此,您应该将此字体添加到 Mac 的字体册中,打开字体册,选择该字体并检查正确的字体名称。

    希望对你有帮助

    【讨论】:

      【解决方案5】:
      self.someLabel.font = [UIFont fontWithName:@"JennaSue.ttf" size:self.someLabel.font.pointSize];
      

      【讨论】:

      • 也许我需要在特定文件夹中添加 .ttf 文件?我也把它放在“支持文件”文件夹中
      【解决方案6】:

      我使用了以下代码,它完成了

       UILabel * lblTest = [[UILabel alloc] initWithFrame:CGRectMake(10, 0, 200, 100)];
      
          lblTest.font = [UIFont fontWithName:@"JennaSue" size:25.0];
          lblTest.text = @"Hello World";
      
          [self.view addSubview:lblTest];
      

      如果仍然无法正常工作,请查看您的系统字体书并搜索该字体和您必须使用该字体才能使其工作

      也试试这个lblTest.font = [UIFont fontWithName:@"Jenna Sue" size:25.0];

      【讨论】:

        【解决方案7】:

        字体可能已损坏或其他原因。我尝试了 Gabriel.Massana & Neeku 提供的解决方案,它适用于一些字体。尝试将字体添加到您的 Mac。如果它显示验证问题,很可能它不会在您的应用程序中运行。希望这会有所帮助

        【讨论】:

          【解决方案8】:

          文件现在在编译源中是否可见...如果是,那么您的字体名称可能有误..有时字体名称与文件名不同...尝试运行

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

          这行代码..您将能够看到字体的实际名称并使用该名称代替

          【讨论】:

          • 是的,它现在列在“编译源”中,但是这段代码不打印这个字体的名称
          • 那么这意味着你的文件没有被检测到......尝试从你的项目中删除文件并重新导入它也再次将它包含在你的info.plist中......你也可以检查你的字体实际上是一个 TTF(True Type 字体)..如果还有其他的,那么这可能是你的问题
          【解决方案9】:

          这是@Ritu 在 Swift 2 中的答案。只需将其放入 AppDelegate 或 View Controller 的 viewDidLoad 方法中即可:

          let names = UIFont.familyNames()
          for name in names {
             print("Font Family: \(name)")
             let fontFaces = UIFont.fontNamesForFamilyName(name)
             for fname in fontFaces {
                print("            \(fname)")
             }
          }
          

          您将在控制台日志中拥有所有字体名称,只需将您需要的字体复制并粘贴到您的代码中即可。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2015-04-01
            • 2012-06-03
            • 1970-01-01
            • 2014-10-15
            • 1970-01-01
            • 2013-06-05
            • 1970-01-01
            • 2021-06-03
            相关资源
            最近更新 更多