Xcode 8自定义字体不会显示在界面构建器中

时间:2016-10-21 04:17:54

标签: ios swift xcode custom-font

我正在尝试在我的iOS应用程序中使用自定义字体(Bebas Neue)。我采取的步骤是:

  1. 将.otf文件复制到项目中。
  2. 确认.otf文件已将项目设置为目标。
  3. 在应用程序'提供的字体中添加了.otf文件。在plist。
  4. 在Build Phases中,.otf文件位于' Copy Bundle Resources'。
  5. 在我的Mac上安装字体。
  6. 尝试打印出所有可用的字体,但我看不到自定义字体。
  7. 我使用的代码:

    for name in UIFont.familyNames() {
      println(name)
      if let nameString = name as? String
      {
        println(UIFont.fontNamesForFamilyName(nameString))
      }
    }
    
    1. 尝试在代码中设置字体并且它有效。
    2. 我使用的代码:

      textLabel?.font = UIFont(name: "BebasNeueRegular", size: 14)
      
      1. 但是我无法在界面构建器中设置它。有什么想法吗?
      2. 截图:

        Font Font-List

10 个答案:

答案 0 :(得分:58)

尝试以下步骤:Swift 3中测试代码。

第1步:将自定义字体添加到项目中(确保添加到目标          我正在使用“PermanentMarker.ttf”,“Pecita.otf”和“AROLY.ttf”字体作为测试字体。

注意:支持字体类型 ttf otf (两种字体类型都可以使用)

第2步:修改application-info.plist文件。         在新行中添加“应用程序提供的字体”键,并将“PermanentMarker.ttf”添加为数组“由应用程序提供的字体”中的新项目。

您的 plist 应如下所示

enter image description here

现在,字体将在Interface Builder中可用。要在代码中使用自定义字体,我们需要按名称引用它,但名称通常与字体的文件名不同

现在,您可以从viewController访问自定义字体。我正在测试字体,方法是将UIlabel放在故事板上,如下所示。

更新2: Working Solution

之后,导入自定义字体并更新plist。从label选择storyBoard,转到Attributes Inspector> {{1}下的Label }>选择Text type并从列表中选择Attributed

enter image description here

enter image description here

enter image description here

输出:

enter image description here

更新1

如果custom font中未列出您的自定义字体。请查看问题的相关链接

注意:尽管如此,您可以以编程方式将Xcode font listBebasNeue分配给您的标签或按钮等,即使它未显示在您的custom font中。如果您无法以编程方式将字体设置到您的对象。在方法下方。

将字体分配给UILabel:

interface Builder

将字体分配给UIButton:

    label?.font = UIFont(name: "BebasNeue", size: 35) // Set to any size

将字体分配给UITextField:

    button.titleLabel?.font = UIFont(name: "BebasNeue", size: 35)

将字体分配给UINavigationBar:

    textField.font = UIFont(name: "BebasNeue", size: 25) 

将字体分配给UIToolBar:

    navigationController?.navigationBar.titleTextAttributes = [NSFontAttributeName: UIFont(name: "BebasNeue", size: 25)!, NSForegroundColorAttributeName: UIColor.red]

<强>输出:

enter image description here

答案 1 :(得分:11)

当使用相同的字体(Bebas Neue)时,我遇到了完全相同的问题:字体没有显示在Plain控件的字体列表中。

适用于Attributed控件,如Joes帖子中的更新2中所述,但实际上您实际上正在更改attributedText而不是常规text,这可能导致对不想要的行为。例如,您必须在运行时使用NSMutableAttributedString来改变文本或文本颜色。

我对这个问题进行了一些调查。我使用FontLab Studio来修改字体并进行一些测试。我使用了Bebas Neue version 1.400 (dated September 15, 2014) from dafont.com

  • 也许字体文件有点被破坏了。重新保存为.otf和.ttf:没有用。
  • 可能是该字体的元数据已损坏。将所有字形复制为新字体并命名为Bebas Neue:没有用。
  • 我将Bebas Neue的字体重命名为BN:有效!但为什么?
  • 也许你不能使用&#34; Neue&#34;以字体名称(因为Helvetica Neue是iOS系统的iOS系统字体)。将字体重命名为Test Neue:仍然有用。
  • 也许你不能使用&#34; Bebas&#34;然后用字体名称?将字体重命名为Bebas:仍然有用。
  • 什么......为了确定,我将字体名称更改回Bebas Neue:不再有效。
  • 我也试过BebasNeue:也没有工作。
  • 然后我改名为Bebas Neue无论如何:一切正常。

    Bebas Neue Whatever

我真的不明白为什么会这样。 Apple或Xcode是否希望您使用&#34; Bebas Neue&#34;或者&#34; BebasNeue&#34;在Interface Builder中? 我安装了正常的Bebas Neue。也许引用被破坏了? 我真的无法说出来。如果Bebas Neue在他们的Xcode中工作,也许干净系统上的某个人可以尝试。

无论如何,我实现了我的目标:能够使用Bebas Neue(我将最终版本命名为#34; Bebas Neue MyAppName&#34;)用于Plain样式标签和按钮,因此我可以设计我的应用程序按原样,不必使用属性字符串。

答案 2 :(得分:7)

现在简单易行 - 在Xcode 10和swift 5

中测试

向Xcode添加字体的步骤

选择您的UILabel,UITextField或其他任何字体部分,然后按

第1步

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

enter image description here

第2步

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

enter image description here

第3步

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

向项目添加字体的步骤

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

是的!多数民众赞成... njoy ..

答案 3 :(得分:5)

最后,我发现了Bebas Neue字体问题的根本原因

我不记得我在哪里下载了字体,但 Bebas Neue字体 不一致

下载即名为Typelight的应用

打开非常规,但是使用Typelight 粗体字体。

enter image description here

你需要纠正大多数 Bebas Neue 字体。

答案 4 :(得分:2)

您实际上可以直接进入属性字体,单击自定义字体窗口。单击左上角的齿轮,然后单击选项管理字体。应弹出一个窗口,顶部应该有一个加号,以便您添加字体。只需选择下载的自定义字体,如xyz.tff,然后添加即可。

需要注意的是,ttf文件应该在p-list和项目目录中引用!

答案 5 :(得分:1)

长时间潜伏在这里。我刚刚创建了一个帐户,因此可以帮助解决此问题的人。这非常令人沮丧,我刚刚进行了大手术来修复它。您不想重复我刚刚经历的事情。

TLDR

在Mac OS中创建一个新的用户帐户,然后再执行下面的所有步骤,看看您是否能够在新帐户中获得成功。事后看来,我可能只需执行第7步和第11步,就可以省去数小时的麻烦。

问题

在从Mojave逐渐升级到Catalina之后,我可以运行最新版本但不是最高版本的Xcode(11.5),我不再能够从字体选择器中为界面生成器中的PLAIN文本控件选择自定义字体。< / p>

正如其他人所提到的,属性文本可以正常工作,因为它使用系统字体选择器而不是“黑匣子/这些字体来自何处?使用纯文本时出现的选择器。

失败的步骤

我尝试了以下步骤,但没有成功:

  1. 将字体文件重新添加到项目中,希望Xcode可以修复 拾取器正在加载的字体表的链接(仍然 不知道为什么选择器中有某些字体及其位置 正在从中获取它们。)
  2. 使用几个终端命令重置Mac OS字体缓存,以希望选择器从OS中损坏的字体缓存中加载列表
  3. 通过在“字体簿”应用中选择File > Restore Standard Fonts重置系统字体
  4. 对计算机大吼大叫,并诅咒苹果成为他们的东西
  5. 试图在操作系统中安装字体以查看是否可以解决任何问题,因为我记得几年前遇到类似问题时可以奏效。
  6. 在互联网上搜索任何线索,并尝试了所有合理的尝试。
  7. 创建了一个全新的简单项目...仍然无法选择自定义字体...哦

带来大枪支

  1. 对自己没有执行Catalina的CLEAN安装进行诅咒,并决定从头开始重新安装Catalina。
  2. 意识到在重新安装之前使用Time Machine备份数据时我犯了一个错误,因为它不能让我仅导入数据文件。迁移助手要求导入库数据(还原时该选项显示为灰色),这是我不想做的……再次诅咒苹果和我自己,因为我知道这会咬我……配置文件中有垃圾造成了这种情况(我是对的...见下文)
  3. 试图通过Migration Assistant在IMPORTED帐户下运行时选择Xcode中的字体...相同的问题...无法选择自定义字体

成功!

  1. 创建一个新用户,并在该帐户下创建一个新的简单项目。答对了!!!我现在可以选择一种字体!!!诅咒苹果并再次对计算机大喊……在升级到Catalina的过程中,我的用户帐户被损坏了

答案 6 :(得分:0)

自Xcode 3.x以来它是old bug

  

在XCode 3.x上有一个带有非标准字体和Interface Builder的IB的错误/已知问题。自定义字体通常需要以编程方式设置(通过[UIFont fontWithName:])

有一些解决方法,例如thisUser Defined Runtime Attributecategories

答案 7 :(得分:0)

我有类似的问题

添加了自定义字体,并将其分配给UILabel所有工作正常,但几次之后它将无法按预期工作。

尝试所有解决方案,但对我来说没有任何作用。所以这是我的解决方案,再次转到上一个UILabel(已经有新添加的自定义字体)select-&gt; label-&gt;选择新添加的字体。检查其他UI控件字体。

现在它工作正常。

希望这有助于newDevs ......

答案 8 :(得分:0)

对于Swift 4.2,这仍然是我经常遇到的问题,即使没有进行任何可能导致它的更改。

从Xcode项目中删除字体文件并再次添加它们可以解决此问题(直到下一次)。

答案 9 :(得分:0)

在我的情况下,“界面”构建器中缺少字体系列,因为该系列中的一种字体没有添加到项目中,而是在info.plist文件中指出。

通常从项目中删除所有自定义字体,然后再次添加它们-解决了该问题。