将自定义字体应用于 Storyboard 中的控件

以下示例显示如何将自定义字体应用于导航栏,并包含对 Xcode 中的一些奇怪行为的修复。在将自定义字体添加到项目后,还可以使用属性检查器将自定义字体应用于任何其他 UIControl ,如 UILabelsUIButtons 等。请注意底部附近的工作样本和视频的外部链接。

  1. 在导航控制器中选择导航栏

StackOverflow 文档

  1. 更改属性检查器中的标题字体

StackOverflow 文档

(在 Xcode 选择新字体之前,你可能需要切换导航栏的 Bar Tint)

笔记(警告)

已经证实这适用于 Xcode 7.1.1+。 ( 参见下面的样品

  1. 你需要在字体生效之前切换导航栏色调(看起来像 Xcode 中的错误;你可以将其切换回默认值并且字体会粘住)
  2. 如果选择系统字体〜确保大小不是 0.0(否则将忽略新字体)

StackOverflow 文档

  1. 如果只有一个 NavBar 在视图层次结构中,这似乎没有问题。似乎忽略了同一堆栈中的辅助 NavBars。 (请注意,如果显示主导航控制器的 navBar,则忽略所有其他自定义 navBar 设置)。

陷阱(deux)

其中一些重复,这意味着他们很可能值得注意。

  1. 有时故事板 xml 会被破坏。这要求你将 Storyboard 中的结构作为源代码模式进行检查(右键单击 storyboard 文件> Open As …)
  2. 在某些情况下,与用户定义的运行时属性关联的 navigationItem 标记被设置为视图标记的 xml 子标记,而不是视图控制器标记。如果是这样,请将其从标签之间移除以便正确操作。
  3. 切换导航栏色调以确保使用自定义字体。
  4. 除非使用动态字体样式,否则请验证字体的大小参数
  5. 视图层次结构将覆盖设置。看起来每个堆栈有一种字体是可能的。

结果

http://s28.postimg.org/gvgs0lxwd/NHg_Ex.png

样品

处理自定义字体

注意〜 可以在 Code With Chris 网站上找到一个很好的清单 ,你可以看到示例下载项目。

如果你有自己的字体并希望在故事板中使用它,那么在以下 SO 问题上有一套不错的答案。一个答案确定了这些步骤。

  1. 为你提供自定义字体文件(.ttf,.ttc)
  2. 将字体文件导入 Xcode 项目
  3. 在 app-info.plist 中,添加一个名为 Fonts 的键,由 application.It 提供数组类型,将所有字体文件名添加到数组中,注意:包括文件扩展名。
  4. 在故事板中,在 NavigationBar 上转到属性检查器,单击字体选择区域的右侧图标按钮。在弹出式面板中,选择字体到自定义,然后选择嵌入字体名称族

自定义字体解决方法

所以 Xcode 自然看起来它可以处理 UINavigationItem 上的自定义字体,但该功能只是没有正确更新(忽略所选字体)。

StackOverflow 文档

解决这个问题:

一种方法是使用故事板修复并添加一行代码:首先将 UIView(UIButton,UILabel 或其他一些 UIView 子类)添加到视图控制器(不是导航项… Xcode 目前不允许进行操作那)。添加控件后,你可以修改故事板中的字体,并将引用添加到 View Controller 的插座中。只需将该视图分配给 UINavigationItem.titleView 即可。如有必要,你还可以在代码中设置文本名称。报告错误(23600285)。

@IBOutlet var customFontTitleView: UIButton!

//Sometime later...    
self.navigationItem.titleView = customFontTitleView

注意 - 此示例源自我在 SO( 此处 ) 上发布的答案。