Xcode 8自定义字体不显示在界面生成器中
我想在我的iOS应用程序中使用自定义字体(Bebas Neue)。 我采取的步骤是:
- 将.otf文件复制到项目。
- 确认.otf文件已将项目设置为目标。
- 在plist中添加“应用程序提供的字体”中的.otf文件。
- 在“构build阶段”中,.otf文件位于“复制包资源”中。
- 在我的Mac上安装字体。
- 尝试打印出所有可用的字体,但我看不到我的自定义字体。
我使用的代码:
for name in UIFont.familyNames() { println(name) if let nameString = name as? String { println(UIFont.fontNamesForFamilyName(nameString)) } }
- 试图在代码中设置字体,它的工作。
我使用的代码:
textLabel?.font = UIFont(name: "BebasNeueRegular", size: 14)
- 但是我不能在界面生成器中设置它。 任何想法?
截图:
尝试下面的步骤:代码在Swift 3
testing。
步骤1 :将您的自定义字体添加到您的项目(确保添加到目标勾选)。我正在使用“PermanentMarker.ttf”,“Pecita.otf”和“AROLY.ttf”字体作为testing字体。
注意:支持字体typesttf和otf (两种字体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如此,您可以将BebasNeue
或custom 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无论如何: 它的作品。
我真不明白为什么会这样。 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 Attribute
和categories
有一些这样的工作。
我有类似的问题
添加自定义字体,并将其分配给UILabel
所有工作正常,但几次后,它不会按预期工作。
尝试所有的解决scheme,但没有为我工作。 所以这里是我的解决scheme,再次去以前的UILabel
(已经有新添加的自定义字体)select – >标签 – >select新添加的字体。 检查其他UI控件字体。
现在它工作正常。
希望这可以帮助newDevs …