Xcode 8自定义字体不显示在界面生成器中

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

  1. 将.otf文件复制到项目。
  2. 确认.otf文件已将项目设置为目标。
  3. 在plist中添加“应用程序提供的字体”中的.otf文件。
  4. 在“构build阶段”中,.otf文件位于“复制包资源”中。
  5. 在我的Mac上安装字体。
  6. 尝试打印出所有可用的字体,但我看不到我的自定义字体。

我使用的代码:

for name in UIFont.familyNames() { println(name) if let nameString = name as? String { println(UIFont.fontNamesForFamilyName(nameString)) } } 
  1. 试图在代码中设置字体,它的工作。

我使用的代码:

 textLabel?.font = UIFont(name: "BebasNeueRegular", size: 14) 
  1. 但是我不能在界面生成器中设置它。 任何想法?

截图:

字形 字体名录

尝试下面的步骤:代码在Swift 3testing。

步骤1 :将您的自定义字体添加到您的项目(确保添加到目标勾选)。我正在使用“PermanentMarker.ttf”,“Pecita.otf”和“AROLY.ttf”字体作为testing字体。

注意:支持字体typesttfotf (两种字体types都可以)

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

你的plist应该看起来像这样

在这里输入图像说明

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

现在,您可以从您的viewController访问自定义字体。 我正在testing字体,将UIlabel放置到如下所示的Storyboard中。

更新2: Working Solution

之后,导入您的自定义字体,并更新您的故事板上的plist .select label ,转到Label > Text type下的Attributes Inspector ,selectAttributed然后从列表中select您的custom font

在这里输入图像说明

在这里输入图像说明

在这里输入图像说明

输出:

在这里输入图像说明

更新1

如果您的自定义字体仍然没有在Xcode font list检查您的问题的相关链接

注意:尽pipe如此,您可以将BebasNeuecustom font编程分配给您的标签或button等,即使它没有在您的interface Builder 。如果您在设置字体到对象programatically.try下面的方法。

分配字体到UILabel:

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

指定字体到UIButton:

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

分配字体到UITextField:

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

将字体分配给UINavigationBar:

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

指定字体到UIToolBar:

  UIBarButtonItem.appearance().setTitleTextAttributes([NSFontAttributeName: UIFont(name: "BebasNeue", size: 25.0)!], for: UIControlState.normal) 

输出:

在这里输入图像说明

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

它可以用于Attributed控件,如Joes post中的Update 2中所描述的那样,但是实际上你正在改变attributedText text而不是常规text ,这可能会导致不必要的行为。 例如,你将不得不摆弄NSMutableAttributedString在运行时改变文字或文字的颜色。

我在这个问题上做了一些调查。 我使用FontLab Studio来修改字体并做一些testing。 我使用了来自dafont.com的Bebas Neue 1.400版本(2014年9月15日) 。

  • 也许字体文件被破坏了。 重新保存为.otf和.ttf: 没有工作。
  • 也许字体的元数据被破坏了。 复制所有的字形到一个新的字体,并命名为Bebas Neue: 没有工作。
  • 我将Bebas Neue的字体改名为BN: 它的工作原理! 但为什么?
  • 也许你不能在字体名称中使用“Neue”(因为Helvetica Neue是iOS 8以前的iOS系统字体)。 将字体更名为Test Neue: 仍然有效。
  • 也许你不能在字体名称中使用“Bebas”? 将字体更名为Bebas: 仍然有效。
  • 什么…只是可以肯定的,我把字体名称改回Bebas Neue: 不再工作。
  • 我也试过BebasNeue: 也没有工作。
  • 然后我把名字改成了Bebas Neue无论如何: 它的作品。

    Bebas Neue无论如何

我真不明白为什么会这样。 Apple或Xcode是否希望您在Interface Builder中使用“Bebas Neue”或“BebasNeue”? 我安装了正常的Bebas Neue。 也许参考文件被破坏了? 我真的不知道。 也许有人在一个干净的系统可以尝试如果Bebas Neue在他们的Xcode工作。

无论如何,我实现了我的目标:能够使用Bebas Neue(我命名最终版本“Bebas Neue MyAppName”)为Plain样式的标签和button,所以我可以按原样devise我的应用程序,不必随意摆弄归因string。

实际上你可以进入属性字体,点击自定义字体窗口。 点击左上方的齿轮,然后点击pipe理字体选项。 一个窗口应该popup,在顶部,应该有一个加号,以允许您添加字体。 只需select您下载的自定义字体,如xyz.tff,然后应该添加。

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

这是自Xcode 3.x以来的一个旧的bug :

使用非标准字体和Interface Builder时,XCode 3.x上的IB存在bug /已知问题。 自定义字体通常需要以编程方式设置(通过[UIFont fontWithName:])

User Defined Runtime Attributecategories有一些这样的工作。

我有类似的问题

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

尝试所有的解决scheme,但没有为我工作。 所以这里是我的解决scheme,再次去以前的UILabel (已经有新添加的自定义字体)select – >标签 – >select新添加的字体。 检查其他UI控件字体。

现在它工作正常。

希望这可以帮助newDevs …