【问题标题】:xcode custom ttf font not workingxcode自定义ttf字体不起作用
【发布时间】:2012-05-09 04:09:32
【问题描述】:

好的,所以我一直在阅读 SO 并进行各种谷歌搜索,但我无法弄清楚为什么我的字体不起作用。

我认为我所做的一切都是正确的,但是当我运行应用程序时,我的按钮上的文本以标准系统字体显示,而不是我导入的字体。我添加了NSLog(@"%@",[UIFont familyNames]); 以查看它是否在列表中,但它不在。这让我觉得我设置错了。

我希望有人可以帮助我以自定义字体显示标签中的文本。 感谢任何认为他们可能有任何建议的人!

这就是我所做的一步一步。

第 1 步:我从互联网上下载了 .ttf 文件。在我的取景器中,它看起来像:

第 2 步:我将字体文件从 finder 拖到 XCode 中,并选中“将文件复制到项目文件夹”选项。所以在我的项目中我可以看到:

第 3 步: 我打开字体册中的字体以查看真正的文件名是什么,然后我看到了:

第 4 步:我在 MyApp-Info.plist 文件中添加了一个密钥,其文件名来自 XCode,包括文件类型。它看起来像这样:

第 5 步:然后在我的代码中写下:

UIButton *thisLevelButton = [UIButton buttonWithType:UIButtonTypeCustom];

[thisLevelButton setBackgroundImage:[UIImage imageNamed:@"ccLSButtonPlayed"] forState:UIControlStateNormal];
thisLevelButton.frame = CGRectMake(x, y, BUTTON_WIDTH, BUTTON_HEIGHT);
thisLevelButton.tag = j;
[thisLevelButton addTarget:self action:@selector(userSelectedButton:) forControlEvents:UIControlEventTouchUpInside];
[thisLevelButton.titleLabel setFont:[UIFont fontWithName:@"PressStartK" size:24]];
[thisLevelButton setTitle:[NSString stringWithFormat:@"%i",(j+1)] forState:UIControlStateNormal];

// add the button to the panel
[subScroll addSubview:thisLevelButton];

作为参考,这是字体系列列表中打印的内容:

(
    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"
)

【问题讨论】:

  • 感谢您的提问!!我按照说明假设这是对相关问题的回答,是的!我的问题现在已经解决了,这不是英文字体,而是波斯字体。两年多来我一直在拔头发,即使使用自定义 API 等也永远找不到合适的解决方案。但显然苹果这次很热衷,让我们使用自定义字体,只需将密钥添加到信息中即可。列表。再次感谢!

标签: iphone ios xcode fonts label


【解决方案1】:

另一种可能性是,当您尝试调用字体时,您可能调用了错误的字体名称。使用:

Swift 2.1+

//Check which fonts available
for family: String in UIFont.familyNames()
{
   print("\(family)")
   for names: String in UIFont.fontNamesForFamilyName(family)
   {
       print("== \(names)")
   }
}

目标 C

//Check which fonts available
for (NSString* family in [UIFont familyNames])
{
    NSLog(@"FONT %@", family);

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

要找到您应该使用 UIFont(name: "yourFontName", size: 24.0) (swift) 或 [UIFont fontWithName:@"yourFontName" size:16.0f] (obj c) 的字体的实际名称。您添加到 plist 的自定义字体名称必须与目录中调用的任何文件(包括 .ttf 或 .otf)匹配,但引用字体的代码必须与您从此输出中获得的字体名称匹配。祝字体大师好运!

【讨论】:

  • 谢谢,我遇到了类似的问题,结果系统将字体引用为与我想象的不同的名称。
  • 我建议大家在使用字体名称之前这样做!好建议!
【解决方案2】:

我怀疑您没有将字体文件添加到目标中,因此它没有复制到应用程序的资源中。您的代码在这里工作正常,字体在字体系列列表中显示为“Press Start K”。

【讨论】:

  • 谢谢!!这太烦人了。我想当我将文件拖入时,我实际上并没有复制到目标。所以我删除了 ttf 文件,然后手动将文件添加到“MyApp”。那行得通
  • Xcode 的文件检查器 (⌘⌥1) 也有一个“目标成员”部分,您可以在其中简单地激活目标的复选框,而不是删除并重新添加文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-03
  • 2012-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-10
相关资源
最近更新 更多