自定义字体在ios不工作

我想在我的ios应用程序中使用HelveticaNeue-UltraLight。 我将字体文件作为资源添加到我的项目中,并在plist文件中添加“由应用程序提供的字体”键。 文件名是HelveticaNeue.dfont,我已经将它添加到了关键数组中。

当我检查可用的字体,我现在可以看到它…

NSArray *fonts = [UIFont fontNamesForFamilyName:@"Helvetica Neue"]; for(NSString *string in fonts){ NSLog(@"%@", string); } 1-07-08 17:32:57.866 myApp[5159:207] HelveticaNeue-Bold 2011-07-08 17:32:57.866 myApp[5159:207] HelveticaNeue-CondensedBlack 2011-07-08 17:32:57.867 myApp[5159:207] HelveticaNeue-Medium 2011-07-08 17:32:57.867 myApp[5159:207] HelveticaNeue 2011-07-08 17:32:57.868 myApp[5159:207] HelveticaNeue-Light 2011-07-08 17:32:57.868 myApp[5159:207] HelveticaNeue-CondensedBold 2011-07-08 17:32:57.868 myApp[5159:207] HelveticaNeue-LightItalic 2011-07-08 17:32:57.869 myApp[5159:207] HelveticaNeue-UltraLightItalic 2011-07-08 17:32:57.869 myApp[5159:207] HelveticaNeue-UltraLight // HERE IT IS! 2011-07-08 17:32:57.869 myApp[5159:207] HelveticaNeue-BoldItalic 2011-07-08 17:32:57.870 myApp[5159:207] HelveticaNeue-Italic 

但是,当我尝试与[UIFont fontWithName:@“HelveticaNeue-UltraLight”大小:12]得到它我刚刚得到HelveticaNeue-Light ..

我没有收到任何错误或警告。 请帮助!

该文件不仅需要添加到项目中,而且还需要添加到目标中。

有时(和我一样),在Xcode中拖放“.ttf”文件时,不会选中“添加到目标”。 这意味着该文件实际上在您的项目中是可见的,但它并没有embedded到应用程序中。

为了确保它是:

  • 点击项目名称(左窗格)
  • 然后在目标(中间窗格)
  • 然后“构build阶段”(右侧窗格中的第三个标签)
  • 然后“复制软件包资源”

您应该看到该列表中的字体文件。

我认为你遇到了同样的问题:iOS中有一个错误,它不能使用同一系列的两种以上的字体。

有关详细信息和解决scheme,请参阅此处的博客文章: http : //www.pixeldock.com/blog/uifont-problem-when-using-more-than-2-custom-fonts-of-the-same-font-family/

打开字体书应用程序。 如果您自己安装了字体,请转到用户,查找您需要的字体并在xcode项目中使用该字体的PostScript名称。

即使对于同一个家族的不同字体变化,它也应该可以工作。

在添加字体文件的Bundle “字体提供的应用程序”属性点击下拉箭头,并input您的字体名称的扩展名

它使用相同字体的不同变体(甚至在IOS 8中)。 我会发布我的错误,以防万一有人有同样的问题…我正在使用字体的文件名,而不是字体名称。 一个有用的解决scheme是打印所有可用的字体,并寻找我正在使用的。 在Swift中将是:

 for fontFamilyNames in UIFont.familyNames() { for fontName in UIFont.fontNamesForFamilyName(fontFamilyNames) { print("FONTNAME:\(fontName)") } } 

我发现这个有用的教程: 与克里斯代码

虽然这可能不会帮助OP,但对其他人可能是有用的。

在iOS 5中, Helvetica Neue会自动包含在内; 您不必将此自定义字体添加到该包。 甚至可以直接从Interface Builder使用该字体系列,这非常方便。

试试这个也会对你有好处。

  [compete_Label setFont:[UIFont fontWithName:@"Helvetica-Bold" size:12]]; 

尝试空格:

 [UIFont fontWithName:@"Helvetica Neue UltraLight" size:12]; 

请参阅某些未显示的字体?

我最终从第三方购买了字体Helvetica Neue UltraLight,并且没有任何问题。

为了在iOS中使用自定义字体,只需将您的字体拖放到您的项目。 在Info.plist中用“应用程序提供的字体”键提到扩展字体名称的数组。 然后使用下面的代码打印所有字体系列名称:

 for (NSString* family in [UIFont familyNames]) { DebugLog(@"FONT FAMILY: %@", family); for (NSString *name in [UIFont fontNamesForFamilyName: family]) { DebugLog(@" %@", name); } } 

控制台打印:

Arial希伯来语Arial希伯来语 – Bold Arial希伯来语 – 轻Arial希伯来语

Calibri Calibri-Bold Calibri

格鲁吉亚格鲁吉亚 – BoldItalic格鲁吉亚 – 大胆佐治亚 – 斜体格鲁吉亚

然后从控制台,你会得到实际的字体名称(如上)。 使用下面的代码来创build字体 –

在核心文本中:

 CTFontRef fontRef = CTFontCreateWithName((CFStringRef)fontName, fontSize, NULL); 

在UIKit中:

 UIFont *font = [UIFont fontWithName:fontName size:10]; 

注意:这里的fontName = @“Calibri-Bold”没有扩展名。

花了几个小时之后,我才知道我们需要添加的字体的名称不是字体的文件名,而是实际的字体名。 我试图包括字体文件bonveno.ttf 。 我已经在info.plist中包含了文件名和扩展名,并能够在“ 复制软件包资源”列表中看到该字体。 我的代码就像

 self.label.font = [UIFont fontWithName:@"bonveno" size:30]; 

这是造成这个问题。 然后,我从Finder中双击字体文件来查看字体的预览。 那一次,我注意到预览窗口中的字体名称为BonvenoCF 。 所以我在代码中join了这个名字

 self.label.font = [UIFont fontWithName:@"BonvenoCF" size:30]; 

像魅力一样工作! 没有这个可爱的字体在我的应用程序不能生活。