Interface Builder中字体未显示

6
由于某些原因,我在设计iPad应用程序时,许多字体在Interface Builder中无法显示。不幸的是,我的iPad还没有送到,所以我无法确定这是否会在长期内成为问题,但是在模拟器中确实存在此问题。
问题中的字体在各种网站上都被列为与iPad兼容,但SDK 4.0.1似乎仍然感到困惑。
例如,直接绘制在新iPad视图上的标签分配给Hoefler Text字体使用默认字体显示。如果我单击编辑文本,它会以正确的字体显示。我已经在几台Mac上尝试过了。
这是一个问题,因为我需要将应用程序模型发送给客户,以便他们的后端团队签署像素完美的布局:(
有什么建议吗?!

为什么我无法给这个iphone-sdk打标签?每次我都打,但它都会忽略它?!?! - Anthony Main
3个回答

9

对于其他可能感兴趣的人:在XCode 3.x上,如果使用非标准字体和接口生成器(Interface Builder),存在一个已知的IB错误/问题。通常需要通过编程方式设置自定义字体(通过[UIFont fontWithName...])。

对于模型设计,您应该使用像PhotoShop等工具而不是接口生成器(Interface Builder)。


似乎还没有解决...我正在尝试在我的设计中使用Hoefler Text,但这真的很痛苦。 - CedricSoubrie
7
当我写那篇文章时,XCode 4还没有发布,但是你说得对:不幸的是,它在版本4中仍然存在... :( - lxt
4
在 XCode 5 DP2 中仍然存在问题。 - user441669

3

在Interface Builder中使用自定义字体,有一个可重用的库可供使用。

它使用了一个简单的技巧。将字体(比如calibri)设置到所有你在项目中不会使用的UI元素上,FontReplacer将会在自定义字体和calibri之间进行映射。因此,没有必要创建IBOutlets或任何其他图形。

这里是GitHub链接,你可以从中下载FontReplacer来在你的项目中使用。 https://github.com/0xced/FontReplacer


如果你想要完全按照UI设计师的工作来对齐标签等内容,这并不是一个好的解决方案 :( - user441669

2

我通过编写UILabel的自定义类别来解决这个问题。该类别具有一个“myFontName”属性,我使用objc_setAssociatedObject在标签上设置它,并使用objc_getAssociatedObject从对象获取它。

然后,我在类别中编写了另一个名为“updateWithMyFont”的方法,通过标签的属性文本属性设置字体(获取属性文本并复制属性,设置字体,创建新的属性字符串,设置属性文本属性)。


你能把你的代码放在这里吗,这样我就能更好地理解了吗? - Suragch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接