UIFont fontWithName返回nil

在我的info.plist中,我添加了一个键“应用程序提供的字体”,并添加了EdwardianScriptITCStd.otf 在这里输入图像说明

但是,当我尝试获取该字体时,返回nil:

 NSLog(@"%@", [UIFont fontWithName:@"EdwardianScriptITCStd" size:16.0f]); 

我使用[UIFont familyNames]打印字体系列,但它也不存在:

 ( Thonburi, "Snell Roundhand", "Academy Engraved LET", "Marker Felt", "Geeza Pro", "Arial Rounded MT Bold", "Trebuchet MS", Arial, Marion, "Gurmukhi MN", "Malayalam Sangam MN", "Bradley Hand", "Kannada Sangam MN", "Bodoni 72 Oldstyle", Cochin, "Sinhala Sangam MN", "Hiragino Kaku Gothic ProN", Papyrus, Verdana, "Zapf Dingbats", Courier, "Hoefler Text", "Euphemia UCAS", Helvetica, "Hiragino Mincho ProN", "Bodoni Ornaments", "Apple Color Emoji", Optima, "Gujarati Sangam MN", "Devanagari Sangam MN", "Times New Roman", Kailasa, "Telugu Sangam MN", "Heiti SC", "Apple SD Gothic Neo", Futura, "Bodoni 72", Baskerville, "Chalkboard SE", "Heiti TC", Copperplate, "Party LET", "American Typewriter", "Bangla Sangam MN", Noteworthy, Zapfino, "Tamil Sangam MN", "DB LCD Temp", "Arial Hebrew", Chalkduster, Georgia, "Helvetica Neue", "Gill Sans", Palatino, "Courier New", "Oriya Sangam MN", Didot, "Bodoni 72 Smallcaps" ) 

我错过了什么? 谢谢!

我的意见开始变得冗长,所以我决定提交一个答案,而不是:)

  1. 自定义字体仅在iOS 3.2及更高版本中受支持,因此请确保您的“部署目标”版本设置不会比版本3.2更远。

  2. validation字体是否包含在构build目标中(在“复制包资源”构build阶段)

  3. 检查“应用程序提供的字体”键的原始值,以确保它是正确的。 在Xcode中查看* .plist时,右键单击并select“显示原始键/值”,然后确认键是UIAppFonts

  4. 我相信在使用fontWithName: size: ,iOS需要使用字体的PostScript名称,通过在Apple的Font Book中打开字体并键入command+I可以find/validation。

  5. 有一次,使用自定义字体和UILabel出现了问题。 我不确定这个问题是否仍然存在。 解决scheme是UILabel子类,并在其中设置字体。

如果它仍然不起作用, 这个自定义字体的堆栈溢出线程有相当多的信息,你可能有一些运气。

编辑
不能保证我有和你一样的字体文件,但是在我的机器上PostScript的名字是“EdwardianScriptITC”

如果您的字体名称包含“ – ”字符,请用空格字符replace。 例如,使用Arial-Bold.ttf,如[UIFont fontWithName:“Arial Bold”size:10];

我有同样的问题。 您可以在故事板的界面生成器中将字体设置为标签。 然后从标签debugging模式获得该字体如:

 let cfnt = txtUsernameField.font 

然后单击小debugging窗口上的ibutton,并在控制台窗口上写出字体的系列名称。 你可以这样使用它:

 txtUsernameField.font = UIFont(name: "MyriadPro-CondIt", size: 14) 

要使用的字体名称似乎是字体书中的“姓氏”。 我试过PostScript的名字,但它并不总是工作。 据我所知,姓氏一直在努力,直到现在。

您可以检查这个信息,如上面的答案中所述,在Font Book中select字体,然后按cmd + I。

希望这可以帮助…

我有这个问题,虽然我发誓我有自定义字体以前工作得很好。

原来我只需要在我的项目中运行“清理”XCode项目,所以它可以重新build立引用。