2011-09-28 53 views
0

我得到这个例外在的iOS 3.1.2,但在iOS 4的其运行微调的UILabel的字体,断言失败 - [的UILabel setfont程序:]

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid parameter not satisfying: font != nil' 

的代码行,

Outbound_Label.font = [UIFont fontWithName:@"DS-Digital" size:24]; 

其中DS-Digital是我的自定义字体。

+1

也许你应该检查返回值,似乎没有找到你的字体。更好地检查资源文件是否包含在内。 –

回答

1

我的猜测是你的自定义字体没有被实例化。

每当我有这样一个问题,即有两件事情发生:获取字体和设置字体,我把它们分开来发现问题:

UIFont *font = [UIFont fontWithName:@"DS-Digital" size:24]; 
Outbound_Label.font = font; 

然后我就可以判断错误所在容易与调试器或NSLog()

事实上,这是一种非常明确的方式来编写代码。我从不担心优化,我只担心清晰度和易维护性。后来如果我有性能问题,请查找真正的罪魁祸首并加以解决。代码越清晰越容易。

在这样的情况下,编译器无疑会优化掉字体变量,所以没有任何伤害。

看到这个:SO answer
希望使用自定义字体现在可以包括在他们的应用程序包的字体和通过在其Info.plist文件中UIAppFonts关键系统注册这些字体的应用。这个键的值是一串字符串,标识应用程序包中的字体文件。系统看到密钥时,会加载指定的字体并使其可供应用程序使用。

+0

我已经尝试使用上述方法,但它在第二行崩溃。 –

+0

在第一行,完成nil或字体实例?如果完成,Outbound_Label有效吗?顺便说一下,什么是Outbound_Label?编码实践是使变量骆驼大小写以小写字母开头,类以大写字母开头。这使理解代码更容易,ARC需要这种约定。 – zaph

+0

字体在第一行代码中为零,并且Outbound_Label也是UIalbel。你能告诉我这个零值有什么可能的原因,因为我已经在资源中添加了DS-DIGI.ttf。 –

1

[UIFont fontWithName:@"DS-Digital" size:24]返回零。因为没有可用于“DS-Digital”的字体(Apple supported font list)。所以它给了崩溃。

+0

我在资源中添加了一个带有此名称的自定义字体。 –