【问题标题】:How to include and use new fonts in iPhone SDK?如何在 iPhone SDK 中包含和使用新字体?
【发布时间】:2012-01-17 06:38:06
【问题描述】:

我想在我的 iphone 应用程序中使用字体“MgOpen Modata”。但我没有在属性检查器的字体列表中看到它。

如何包含该字体以便我可以使用它?

【问题讨论】:

标签: iphone objective-c cocoa-touch iphone-sdk-3.0 ios4


【解决方案1】:

如果要更改字体样式,可以直接使用[UIFont fontWithName:@"ArialMT" size:14]; 方法。此外,iPhone 库中可能没有所有字体。请参阅this 以获取可用的字体样式。

【讨论】:

  • 这是否意味着除了您在链接中提到的字体之外,我不能在 iPhone 上使用任何字体?有没有办法添加新字体?
【解决方案2】:
  1. 将字体文件添加到资源文件中
  2. 编辑您的Info.plist:使用密钥Fonts provided by application 添加一个新条目。
  3. 对于每个文件,将文件名添加到此数组中

在下面的示例中,我添加了字体“DejaVu Sans Mono”:

在您的应用程序中,您可以使用[UIFont fontWithName:@"DejaVuSansMono-Bold" size:14.f]

或者如果你想在 html/css 中使用它,只需使用font-family:DejaVu Sans Mono;

注意:这在 iOS 3.2 及更高版本中可用。

【讨论】:

  • to all : 注意 fontwithName 不能包含扩展 DejaVuSansMono-Bold.TTF,这个错误我已经犯过好几次了。所以。
  • 如果您对上述内容有任何疑问,我会说看看这个很棒的教程:codewithchris.com/…
  • 不要忘记在 Build-Phases 上添加字体 -> 复制捆绑资源
  • @Velthune 无论我添加多少次字体,我总是会回到这个答案和你的评论。干杯!
  • 添加“UIAppFonts”而不是“应用程序提供的字体”对我有用。
【解决方案3】:

如果您有 .otf 格式。有时这种格式不起作用。将 .otf 格式转换为 .ttf。网上有一堆字体转换器。 如上所述,将自定义字体添加到应用程序提供的字体下的 .plist 文件后。确保在 Build Phase -> copy Bundel Resource 下的 Project Target 中存在该文件。如果没有,则添加它。 然后只需在您的代码中添加此 [UIFont fontWithName:@"your custom font" size:your selection of size];

【讨论】:

    【解决方案4】:

    我发现this walkthrough 是最好的

    虽然上面接受的答案确实有效,但我发现如果您将文本添加到 XIB 文件中,然后将字体设置为我们的新字体,那么文本不会更新。

    确保新字体包含在资源中解决了这个问题(直接取自演练):

    “这应该不是问题,但有时当您无法显示字体时,这可能会让人头疼,所以现在让我们仔细检查以排除潜在的缺陷。

    通过在解决方案资源管理器中突出显示 XCode 项目文件并在右侧选择“构建阶段”,转到您的项目构建阶段窗格。您会看到可以展开的部分之一是“复制捆绑资源”。打开该列表并确保您的字体包含在该列表中。”

    演练中的其他内容是相同的内容(将文件添加到您的项目和 plist 文件中)

    此答案的所有功劳归功于 Code with Chris,这为我节省了很多时间和精力,我只是从他的页面上复制了一个镜头,以使该答案能够自立,而不是要求您单击链接。

    【讨论】:

      【解决方案5】:

      大多数时候我们忘记给应用程序 Target 添加字体。确保您没有忘记这一重要步骤。注意检查右侧面板 File Inspector > Target Membership 复选框。

      您还可以通过在应用程序的任何位置运行此代码 sn-p 来检查字体是否已正确添加到您的应用程序中。

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

      编辑

      字母顺序:

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

      这将在您的应用中填充可用字体列表,您添加的字体也将出现在该列表中。

      【讨论】:

        【解决方案6】:

        不要忘记将字体添加到目标编译包资源,方法是转到 'Targets' -> 'Build Phases' -> 'Copy Bundle Resources' 并手动添加所有字体

        【讨论】:

          【解决方案7】:

          我认为对于开发人员来说,将 plist 结构作为原始源代码会更好。我将其留作复制/粘贴:

          <key>UIAppFonts</key>
              <array>
                  <string>Roboto-BoldItalic.ttf</string>
                  <string>Roboto-Medium.ttf</string>
                  <string>Roboto-MediumItalic.ttf</string>
                  <string>Roboto-Regular.ttf</string>
                  <string>Roboto-Bold.ttf</string>
              </array>
          

          复制此 sn-p 并将字符串键修改为数组中所需的字体。 提示:要将 plist 作为原始源代码查看,请单击文件上方的辅助按钮并选择 Open As -> Source code

          编辑

          // Logs fonts ordered by name
              for (NSString* family in [[UIFont familyNames] sortedArrayUsingSelector:@selector(compare:)])
              {
                  NSLog(@"%@", family);
          
                  for (NSString* name in [[UIFont fontNamesForFamilyName:family] sortedArrayUsingSelector:@selector(compare:)])
                  {
                      NSLog(@"  %@", name);
                  }
              }
          

          添加字体后,添加到(例如)AppDelegate.m 类以查看真正的字体名称(在捆绑包上)可能很有用。我多次遇到的一个问题是我加载了错误名称的字体,假设字体文件名是正确的。有时它与捆绑实名不同。 除此之外,您还可以使用 finder (macOS) 上的文件信息窗口 (cmd+i) 检查文件全名。

          举例说明:
          文件名 = “DroidSansEthiopic-Regular”
          bundle 中的已处理名称 = "Droid Sans Ethiopic"

          【讨论】:

          • 你列出所有字体的日志代码真的很有帮助。它帮助我发现,出于某种原因,Xcode 确实认为 Roboto Medium 对我不可用——即使它在我的捆绑资源和我的 Info.plist 中。我已经成功添加了 7 种其他字体,但 Roboto Medium 无法使用(甚至尝试了来自不同来源的不同 .ttf 文件)。我被难住了。
          【解决方案8】:

          在 Xamarin iOS 中

          第 1 步: 首先,您必须将.ttf.otf 文件添加到您的项目中。

          喜欢 Roboto-BoldItalic.ttf

          第 2 步: 右键单击字体并选择属性

          1. 构建操作 --> 内容
          2. 复制到输出目录 --> 始终复制

          第 3 步:info.plist

          选择属性Fonts provided by application并添加字体名称。

          第 4 步:

          在下面以编程方式设置字体

          account.Font = UIFont.FromName("Roboto-BoldItalic", 18f);
          

          【讨论】:

            【解决方案9】:

            现在简单易用-在 Xcode 9.2 和 swift 4 中测试

            将字体添加到 Xcode 的步骤

            在字体部分选择您的 UILabel、UITextField 或其他任何内容并关注

            第 1 步

            从字体选择屏幕的左角选择设置菜单。并选择字体管理器选项。

            第 2 步

            点击下面标记的添加按钮。

            第 3 步

            选择包含您的字体的文件夹。它将被加载到 XCode 字体列表中。

            向项目添加字体的步骤

            不要忘记使用 Fonts provided by application. 键向您的 plist 添加描述,并将字体文件放在项目目标设置下的复制包资源中。

            是的!就是这样..njoy..

            【讨论】:

              猜你喜欢
              • 2010-10-08
              • 1970-01-01
              • 2012-12-31
              • 1970-01-01
              • 2011-10-07
              • 2014-09-19
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多