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

che*_*sam 44 xcode custom-font ios swift

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

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

我用过的代码:

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

我用过的代码:

textLabel?.font = UIFont(name: "BebasNeueRegular", size: 14)
Run Code Online (Sandbox Code Playgroud)
  1. 但是我不能在界面构建器中设置它.任何的想法?

截图:

字形 字体名录

Joe*_*Joe 60

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

第1步:将您的自定义字体添加到您的项目中(确保添加到目标 勾选).我使用"PermanentMarker.ttf","Pecita.otf"和"AROLY.ttf"字体作为测试字体.

注意:支持字体类型ttfotf(两种字体类型都应该有效)

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

你的plist应该是这样的

在此输入图像描述

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

现在,您可以从viewController访问自定义字体.我正在通过将UIlabel放置到Storyboard来测试字体,如下所示.

更新2: Working Solution

之后,进口自定义字体和更新了plist.选择label从您storyBoard,转到Attributes InspectorLabel> Text type>选择Attributed,然后选择您custom font从列表中.

在此输入图像描述

在此输入图像描述

在此输入图像描述

输出:

在此输入图像描述

更新1

如果您的自定义字体仍未列在.中,请Xcode font list检查您问题的相关链接

注意: 仍然可以分配BebasNeue或以custom font编程方式指定您的标签或按钮等,即使它没有显示在您的标签或按钮中.interface Builder如果您无法以编程方式将字体设置到对象上,请按以下方法操作.

将字体分配给UILabel:

    label?.font = UIFont(name: "BebasNeue", size: 35) // Set to any size
Run Code Online (Sandbox Code Playgroud)

将字体分配给UIButton:

    button.titleLabel?.font = UIFont(name: "BebasNeue", size: 35)
Run Code Online (Sandbox Code Playgroud)

将字体分配给UITextField:

    textField.font = UIFont(name: "BebasNeue", size: 25) 
Run Code Online (Sandbox Code Playgroud)

将字体分配给UINavigationBar:

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

将字体分配给UIToolBar:

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

输出:

在此输入图像描述


Fli*_*ker 12

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

它适用于Attributed控件,如Joes post中的Update 2中所述,但实际上您实际上正在更改attributedText而不是常规text,这可能会导致不必要的行为.例如,您必须NSMutableAttributedString在运行时改变文本或文本颜色.

我对这个问题做了一些调查.我使用FontLab Studio修改字体并进行一些测试.我使用了dafont.com的Bebas Neue版本1.400(2014年9月15日).

  • 也许字体文件以某种方式被破坏了.重新保存为.otf和.ttf:没有用.
  • 也许字体的元数据已损坏.将所有字形复制到一个新字体并命名为Bebas Neue:没有用.
  • 我将字体从Bebas Neue重命名为BN:它有效!但为什么?
  • 也许你不能在字体名称中使用"Neue"(因为Helvetica Neue是iOS系统的iOS系统字体).将字体重命名为Test Neue:仍然有效.
  • 也许你不能在字体名称中使用"Bebas"呢?将字体重命名为Bebas:仍然有效.
  • 什么......为了确定,我将字体名称改回Bebas Neue:不再工作了.
  • 我也试过BebasNeue:没用.
  • 然后我改名为Bebas Neue Whatever:它有效.

    Bebas Neue无论如何

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

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

  • 由于Bebas Neue根据允许免费再分发的SIL Open Font License获得许可,因此我上传了一个预先重命名的版本,您可以在此处下载:http://ge.tt/14SV3fj2祝您好运! (5认同)
  • 你是怎么改名的?我对这个特定的字体有同样的问题. (3认同)
  • 对我来说也是一样的解 看起来Xcode不喜欢字体名称,直到我更改它的FullName元数据 (2认同)

Sar*_*ith 9

它现在简单易用 - 在Xcode 10和swift 4.2中测试过

向Xcode添加字体的步骤

选择你的UILabel,UITextField或其他任何然后在fonts部分下面,然后按照

步骤1

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

在此输入图像描述

第2步

单击下面标记的添加按钮.

在此输入图像描述

第3步

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

将字体添加到项目的步骤

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

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


Ján*_*nos 5

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

我不记得在那里我已经下载的字体,但自由的字体抵达Neue不一致的

下载名为的应用程序Typelight

打开不正常,但也就是大胆用字体Typelight

在此处输入图片说明

您需要正确的大多数Bebas Neue字体。

  • 谢谢,这有帮助!事实上,我注意到姓氏中包含“**Neue**”一词会导致问题,因此只需将姓氏重命名为“Bebas”就足够了。 (2认同)