我正在尝试在我的iOS应用程序中使用自定义字体(Bebas Neue)。我采取的步骤是:
我使用的代码:
for name in UIFont.familyNames() {
println(name)
if let nameString = name as? String
{
println(UIFont.fontNamesForFamilyName(nameString))
}
}
答案 0 :(得分:58)
尝试以下步骤:在Swift 3
中测试代码。
第1步:将自定义字体添加到项目中(确保添加到目标 我正在使用“PermanentMarker.ttf”,“Pecita.otf”和“AROLY.ttf”字体作为测试字体。
注意:支持字体类型 ttf 和 otf (两种字体类型都可以使用)
第2步:修改application-info.plist文件。 在新行中添加“应用程序提供的字体”键,并将“PermanentMarker.ttf”添加为数组“由应用程序提供的字体”中的新项目。
您的 plist 应如下所示
现在,字体将在Interface Builder中可用。要在代码中使用自定义字体,我们需要按名称引用它,但名称通常与字体的文件名不同
现在,您可以从viewController访问自定义字体。我正在测试字体,方法是将UIlabel放在故事板上,如下所示。
更新2: Working Solution
之后,导入自定义字体并更新plist
。从label
选择storyBoard
,转到Attributes Inspector
> {{1}下的Label
}>选择Text type
并从列表中选择Attributed
。
输出:
更新1
如果custom font
中未列出您的自定义字体。请查看问题的相关链接
注意:尽管如此,您可以以编程方式将Xcode font list
或BebasNeue
分配给您的标签或按钮等,即使它未显示在您的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]
<强>输出:强>
答案 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。
然后我改名为Bebas Neue无论如何:一切正常。
我真的不明白为什么会这样。 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添加字体的步骤
选择您的UILabel,UITextField或其他任何字体部分,然后按
第1步
从字体选择屏幕的左下角选择设置菜单。并选择字体管理器选项。
第2步
点击下面标记的添加按钮。
第3步
选择包含字体的文件夹。它将被加载到XCode字体列表中。
向项目添加字体的步骤
不要忘记使用密钥Fonts provided by application
向您的plist添加说明,并将字体文件放在项目目标设置下的复制包资源中。
是的!多数民众赞成... njoy ..
答案 3 :(得分:5)
最后,我发现了Bebas Neue字体问题的根本原因。
我不记得我在哪里下载了字体,但 Bebas Neue字体 不一致。
下载即名为Typelight
的应用
打开非常规,但是使用Typelight
粗体字体。
你需要纠正大多数 Bebas Neue 字体。
答案 4 :(得分:2)
您实际上可以直接进入属性字体,单击自定义字体窗口。单击左上角的齿轮,然后单击选项管理字体。应弹出一个窗口,顶部应该有一个加号,以便您添加字体。只需选择下载的自定义字体,如xyz.tff,然后添加即可。
需要注意的是,ttf文件应该在p-list和项目目录中引用!
答案 5 :(得分:1)
长时间潜伏在这里。我刚刚创建了一个帐户,因此可以帮助解决此问题的人。这非常令人沮丧,我刚刚进行了大手术来修复它。您不想重复我刚刚经历的事情。
TLDR
在Mac OS中创建一个新的用户帐户,然后再执行下面的所有步骤,看看您是否能够在新帐户中获得成功。事后看来,我可能只需执行第7步和第11步,就可以省去数小时的麻烦。
问题
在从Mojave逐渐升级到Catalina之后,我可以运行最新版本但不是最高版本的Xcode(11.5),我不再能够从字体选择器中为界面生成器中的PLAIN文本控件选择自定义字体。< / p>
正如其他人所提到的,属性文本可以正常工作,因为它使用系统字体选择器而不是“黑匣子/这些字体来自何处?使用纯文本时出现的选择器。
失败的步骤
我尝试了以下步骤,但没有成功:
File > Restore Standard Fonts
重置系统字体带来大枪支
成功!
答案 6 :(得分:0)
自Xcode 3.x以来它是old bug:
在XCode 3.x上有一个带有非标准字体和Interface Builder的IB的错误/已知问题。自定义字体通常需要以编程方式设置(通过[UIFont fontWithName:])
有一些解决方法,例如this与User Defined Runtime Attribute
和categories
。
答案 7 :(得分:0)
我有类似的问题
添加了自定义字体,并将其分配给UILabel
所有工作正常,但几次之后它将无法按预期工作。
尝试所有解决方案,但对我来说没有任何作用。所以这是我的解决方案,再次转到上一个UILabel
(已经有新添加的自定义字体)select-&gt; label-&gt;选择新添加的字体。检查其他UI控件字体。
现在它工作正常。
希望这有助于newDevs ......
答案 8 :(得分:0)
对于Swift 4.2,这仍然是我经常遇到的问题,即使没有进行任何可能导致它的更改。
从Xcode项目中删除字体文件并再次添加它们可以解决此问题(直到下一次)。
答案 9 :(得分:0)
在我的情况下,“界面”构建器中缺少字体系列,因为该系列中的一种字体没有添加到项目中,而是在info.plist文件中指出。
通常从项目中删除所有自定义字体,然后再次添加它们-解决了该问题。