[UILabel setFont:]的断言失败



我在iOS 3.1.2中设置UILabel字体时遇到了这个异常,但在iOS 4中运行良好,

*** 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是我的自定义字体

[UIFont fontWithName:@"DS-Digital" size:24]返回nil。因为没有适用于"DS-Digital"(Apple支持的字体列表)的字体。所以它给了崩溃。

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

每当我遇到这样的问题时,有两件事发生:获取字体和设置字体,我将它们分开来查找问题:

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

然后我可以很容易地用调试器或NSLog()确定错误的位置。

实际上,这是一种非常清晰的方式来编写代码。我从不担心优化,我只担心清晰和易于维护。如果以后我分析了性能问题,找到真正的罪魁祸首并解决它们。代码越清晰越容易。

在这种情况下,编译器无疑会优化掉font变量,所以没有什么害处。

看这个:SO答案
想要使用自定义字体的应用程序现在可以在它们的应用程序包中包含这些字体,并通过在它们的Info中包含UIAppFonts键向系统注册这些字体。plist文件。该键的值是一个字符串数组,用于标识应用程序包中的字体文件。当系统看到键时,它加载指定的字体,并使它们可供应用程序使用。

请试试这个,它对我来说很好。

https://github.com/zynga/FontLabel

我已经从http://www.fontriver.com/font/ds-digital/下载了DS-Digital字体用这个字体运行上面的应用程序,它可以在IOS 3.1.2上工作。

欢呼。

相关内容

最新更新