在界面生成器中使用自定义字体
我搜索过该网站,但发现了一些未解答的问题。
我已将自定义字体加载到我的 xcode 项目中。 [UIFont fontWithName:@"Laconic-Light" size:19]
有效。但界面生成器不喜欢这种字体。我不能将它与 IB 一起使用,它总是显示默认字体。有没有办法告诉IB可以使用该字体?
I've searched this site but I just found unanswered questions.
I've loaded a custom font into my xcode project. A [UIFont fontWithName:@"Laconic-Light" size:19]
works. But interface builder doesn't like the font. I can't use it with IB it always shows the default font. Is there a way to tell IB that its ok to use the font?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
我在 Xcode 4 中也遇到了这个问题。在我的程序中,有很多
UILabel
没有IBOutlets
所以我就这样做了;首先,将
UILabel
子类化为CustomFontLabel
然后,重写“
awakeFromNib
”方法最后,在 Interface Builder > Identity Inspector 将类更改为
CustomFontLabel
。I have also this problem in Xcode 4. In my program, there are lots of
UILabel
which have noIBOutlets
so I do in that way;First, subclass the
UILabel
toCustomFontLabel
Then, override the "
awakeFromNib
" methodFinally, in Interface Builder > Identity Inspector change class to
CustomFontLabel
.另一个解决方案是对 UILabel 进行子类化以加载自定义字体。然后您可以在 IB 中引用它,尽管您仍然看不到正确的字体。
Another solution would be to subclass UILabel to load in your custom font. You can then reference it in IB, although you still cannot see the proper font.
我更喜欢以稍微更通用的方式执行此操作,这样您就可以在 Interface Builder 中调整文本大小,并在运行时简单地替换字体。
我为任何 UIKit 元素创建一个 IBCollection 属性来设置字体,然后从 IB 连接适当的项目。
然后在我看来确实加载了我使用这样的方法:
并且
setLightFontOnItemsInArray:
方法如下所示:I prefer to do this in a slightly more generic way, which let's you size your text within Interface Builder, and simply replace the fonts at runtime.
I create an IBCollection property for any UIKit elements to set a font to, then wire up the appropriate items from IB.
Then in my view did load I use a method like this:
And the
setLightFontOnItemsInArray:
method looks like this:您可以安装此脚本http://pitaya.ch/moarfonts/。
我在 xcode 5.1.1 上工作得非常好。
You can install this script http://pitaya.ch/moarfonts/.
Works really well for me with xcode 5.1.1.
感谢苹果,在 Xcode 6 中,我们在界面生成器本身中提供了自定义字体。
Thanks to apple, in Xcode 6, we have custom fonts available in interface builder itself.
调配字体
如果调配 UIFont 类,解决方案通常很简单。我认为最好选择像 Helvetica Neue 这样的正常字体并覆盖它。这允许您通过拉动映射将整个项目重新纳入标准。当我意识到 其他人也这么做了时,我已经想出了一个 swizzle 来实现这个目标,所以我捣碎了有点。 NSHipster 会告诉您 swizzling 可能很危险,但在这种情况下,考虑到绝对值,风险相当低UIFont API 的简单性。就我而言,它是为企业应用程序完成的,因此风险更低。
UIFont+CustomFont.m 类别
FontMap.plist
为了简单起见,我们假设我们有一种名为 CustomSans 的字体。
Swizzle a Font
The solution is generally straightforward if you swizzle the UIFont class. I think it is best to pick a sane font like Helvetica Neue and override that. This allows you to put the whole project back into the standard by pulling the mapping. I had already come up with a swizzle to achieve this goal when I realized someone else did it too so I mashed it up a bit. As NSHipster will tell you swizzling can be dangerous, but in this case the risk is pretty low considering the absolute simplicity of the UIFont API. In my case it was done for an Enterprise app so it was even lower risk.
UIFont+CustomFont.m Category
The FontMap.plist
For the sake of simplicity we'll pretend we have a font called CustomSans.