在XCode中无法为UILabel设置自定义字体

5

我无法在XCode中为UILabel设置自定义字体。

这是我尝试过的:

  • 下载“JennaSue”字体 -- http://www.dafont.com/jenna-sue.font

  • 在“Supporting Files”文件夹下打开“app-info.plist”

  • 在列表中添加键为“Fonts provided by application”的新行

  • 在数组中添加“JennaSue.ttf”

  • 像这样在代码中使用它:

self.someLabel.font = [UIFont fontWithName:@"JennaSue" size:14];

但什么也没有发生 -- 默认字体仍然可见。

为什么?我做错了什么?我该如何解决?


尝试过 self.someLabel.font = [UIFont fontWithName:@"Jenna-sue" size:14]; 吗? - Rajesh
就像 @user3781721 所说的那样,我认为您忘记了 .ttf 扩展名。 - Jasmin
请确保您已将字体添加到目标并将其_Postscript_名称传递给fontWithName:size:(您可以在Font Book应用程序中找到有关它的信息)。还请参阅此相关答案:http://stackoverflow.com/questions/24605844/some-font-not-showing-in-myapp-from-ios/24606107#24606107 - Alladinian
你能否检查一下你所包含的ttf文件是否存在于“targets>buildPhases>compile sources”中?有时在导入过程中,对该文件的引用会丢失。 - Geet
@Geet 是的,没有这个文件。我已经添加了它,但是什么也没有发生。 - FrozenHeart
显示剩余2条评论
9个回答

14

请确保您的字体位于捆绑资源中。由于某些原因,Xcode大部分时间无法正确导入自定义字体:

图片描述

图片描述

图片描述

我已经让字体工作了:

图片描述

示例代码: 此处


我还必须将它添加到Info.plist中,并添加:应用程序提供的字体:文件名 - jdl

5
  1. 进入你的项目的info.plist文件,
  2. 右键单击并选择添加行,
  3. 在新行中输入Fonts provided by application,
  4. 将所需字体名称作为此键的项目输入。
  5. 拖放字体文件到项目中,
  6. 将其应用于所需文本:

someLabel.font = [UIFont fontWithName:@"JennaSue" size: 12.0];

我认为你错过了上面的第5步。

更新: 在执行第5步时,请记得勾选复制实际文件到项目目录的标记:

enter image description here 记得通过按下“command+alt+shift+K”(IRRC!)来清理您的项目。 然后进入您的

然后进入项目的Build Phases,并确保您可以在资源文件中看到您的.ttf文件:

enter image description here

P.S. 我现在不在我的Mac上,所以我使用了这个教程的截图。这就是为什么我为您的问题淡化了不必要的行。


不,我已经把这个文件放在“支持文件”文件夹中了。 - FrozenHeart
嗯,好的。但是请确保Xcode已经成功接收并解析了该文件!因为有时它很难识别新增的文件。我正在更新我的答案。 - Neeku

2

请查看以下代码:

 NSArray *names = [UIFont familyNames];
 NSLog(@"Font FamilyNames : ");
 for (NSString *name in names) {
     NSLog(@"Font Family:  %@",name);
     NSArray *fontFaces = [UIFont fontNamesForFamilyName:name];
     for (NSString *fname in fontFaces) {
          NSLog(@"   %@",fname);
     }
  }

  self.someLabel.font = [UIFont fontWithName:@"use correct name" size:self.someLabel.font.pointSize];

并使用与NSLog打印相同的名称。


1
在向Xcode添加自定义字体后,不要忘记将字体添加到plist文件中。 项目设置 > 信息 > 自定义iOS目标属性 enter image description here 添加属性应用程序提供的字体并输入自定义字体的文件名。 然后,您可以使用以下代码示例: self.someLabel.font = [UIFont fontWithName:@"JennaSue" size:14]; 注意:确保在代码中使用正确的字体名称。为此,您应该将此字体添加到Mac的字体册中,打开字体册,选择该字体并检查正确的字体名称。
希望这有所帮助。

0

这是@Ritu在Swift 2中的答案。只需将此代码放入您的AppDelegate中,或者放入您的View Controller的viewDidLoad方法中:

let names = UIFont.familyNames()
for name in names {
   print("Font Family: \(name)")
   let fontFaces = UIFont.fontNamesForFamilyName(name)
   for fname in fontFaces {
      print("            \(fname)")
   }
}

您可以在控制台日志中找到所有字体名称,只需复制并粘贴您需要的字体名称到您的代码中即可。


0
self.someLabel.font = [UIFont fontWithName:@"JennaSue.ttf" size:self.someLabel.font.pointSize];

也许我需要将.ttf文件添加到特定的文件夹中?我也把它放在了“支持文件”文件夹中。 - FrozenHeart

0
我使用了下面的代码,而且它已经完成了。
 UILabel * lblTest = [[UILabel alloc] initWithFrame:CGRectMake(10, 0, 200, 100)];

    lblTest.font = [UIFont fontWithName:@"JennaSue" size:25.0];
    lblTest.text = @"Hello World";

    [self.view addSubview:lblTest];

如果还不起作用,请查看您的系统字体库并搜索该字体,您必须使用该字体才能使其正常工作

另外,尝试使用以下代码:lblTest.font = [UIFont fontWithName:@"Jenna Sue" size:25.0];


0

现在编译源代码中是否可见该文件...如果是,则可能字体名称错误...有时字体名称与其文件名不同...尝试运行

for (NSString *familyName in [UIFont familyNames]) 
{ 
    for (NSString *fontName in [UIFont fontNamesForFamilyName:familyName])
    { 
       NSLog(@"%@", fontName);
    }
}

通过这些代码... 你将能够看到实际字体名称并使用该名称


是的,它现在在“编译源代码”中列出了,但是这段代码没有打印出这个字体的名称。 - FrozenHeart
如果出现这种情况,那么意味着您的文件没有被检测到...尝试从项目中删除该文件,重新导入它并再次包含在您的info.plist中...还请检查您的字体是否实际上是TTF(True Type Font)...如果不是,则可能会出现问题。 - Geet

0

字体可能已经损坏或出现了其他问题。我尝试了Gabriel.Massana和Neeku提供的解决方案,对于某些字体确实有效。尝试将字体添加到您的Mac中。如果显示验证问题,则很可能无法在您的应用程序中使用。希望这可以帮助到您。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接