如何在 ios 中以编程方式使用自定义字体样式

How to use customFont style programmatically in ios

我想使用 SemiboldBold 样式 Proxima Nova.
为此,我在我的应用程序资源中添加了 Proxima Nova、Proxima Nova Semibold 和 Proxima Nova Bold 字体。
我已经在 info.plist 文件中进行了正确的输入,并在 Copy Bundle 资源中进行了确认。 我使用这些字体的方式如下。

[attributedString addAttribute:NSFontAttributeName value:[UIFont fontWithName:@"Proxima Nova" size:12.0] range:NSMakeRange(0, storypart1.length-1)];

这对我来说很好。
但是当我想使用相同字体的 SemiboldBold 样式时,我我收到错误。 我尝试使用 SemiboldBold 样式的方式如下。

[attrString addAttribute:NSFontAttributeName value:[UIFont fontWithName:@"Proxima Nova-Semibold" size:12.0] range:NSMakeRange(0, storypart1.length-1)];

[attrString addAttribute:NSFontAttributeName value:[UIFont fontWithName:@"Proxima Nova Semibold" size:12.0] range:NSMakeRange(0, storypart1.length-1)];

但在两者中我都收到以下错误。

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'NSConcreteMutableAttributedString addAttribute:value:range:: nil value'

请帮我解决这个问题。
提前致谢。

请先像这样打印您的字体名称,然后将您确切的粗体字体名称放入附加值中,由于字体为零(未找到您传递的字体),应用程序正在崩溃。因此,为粗体传递完全相同的名称。

NSLog(@"Font %@",[UIFont fontNamesForFamilyName:@"Proxima Nova"]);

例如

NSLog(@"Font %@",[UIFont fontNamesForFamilyName:@"Arial"]);

输出:

Font (
    ArialMT,
    "Arial-BoldItalicMT",
    "Arial-ItalicMT",
    "Arial-BoldMT"
)