我在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是我的自定义字体。
答案 0 :(得分:1)
我的猜测是你的自定义字体没有被实例化。
每当我遇到这样的问题时,会发生两件事:获取字体并设置字体,我将它们分开以找到问题:
UIFont *font = [UIFont fontWithName:@"DS-Digital" size:24];
Outbound_Label.font = font;
然后,我可以使用调试器或NSLog()
确定错误的位置。
事实上,这是编写代码的一种非常明确的方式。我从不担心优化,我只担心清晰度和易维护性。稍后如果我有个性能问题,请找出真正的罪魁祸首并解决它们。代码越清晰越容易。
在这种情况下,编译器无疑会优化掉字体变量,因此没有任何伤害。
请参阅:SO answer
想要使用自定义字体的应用程序现在可以在其应用程序包中包含这些字体,并通过在其Info.plist文件中包含UIAppFonts键来向系统注册这些字体。此键的值是一个字符串数组,用于标识应用程序包中的字体文件。当系统看到密钥时,它会加载指定的字体并使其可供应用程序使用。
答案 1 :(得分:1)
[UIFont fontWithName:@"DS-Digital" size:24]
返回nil。因为没有可用于“DS-Digital”(Apple supported font list)的字体。所以它给了崩溃。
答案 2 :(得分:0)
请试试这个,它对我来说很好。
https://github.com/zynga/FontLabel
我从http://www.fontriver.com/font/ds-digital/下载了DS-Digital字体 并使用此字体运行上述应用程序,它适用于IOS 3.1.2。
干杯。