代码之家  ›  专栏  ›  技术社区  ›  phil swenson

在原生iOS7应用程序中使用fontello字体

  •  2
  • phil swenson  · 技术社区  · 12 年前

    我该如何从这里取一个角色: http://fontello.com/ 并在本机iOS 7应用程序中使用它,以便在UILabels或UITextViews中使用?

    这是NSAttributedString的适当用途吗?

    有人有做这种工作的例子吗?

    谢谢

    2 回复  |  直到 12 年前
        1
  •  4
  •   Rob Napier    12 年前

    这很好,不管有没有 NSAttributedString 。您可以申请 NSFontNameAttribute 到某些范围,或者您可以只分配 font 上的属性 UILabel 。自定义字体与任何其他类型的字体都没有什么不同(一会儿就会有更多)。

    所以是最基本的。创建字体文件。你关心的是TTF(真字体)。将其复制到您的应用程序中,并确保在“复制”阶段将其复制进来。(如果你把它放进应用程序并添加到目标中,它会自动完成。)

    将其添加到目标的“信息”窗格中。这是“应用程序提供的字体”设置,是一个数组:

    enter image description here

    然后您可以加载字体:

    self.label.font = [UIFont fontWithName:@"myfont" size:14.0];
    

    请记住,信息中的名称就是文件名。中的名称 fontWithName:size: 是字体名称。它们可能会有所不同,尤其是当您重命名文件时;这不会重命名字体。

    Fontello会告诉你每个字形的代码。如果上面写着U+E800,你会把它放在 NSString 像 @"\ue800" .

    你可能会创建不包含每个字符的字体(内置字体也会出现这种情况,但你通常不会注意到或担心)。你可以很容易地将这些东西混合到“普通”文本中,比如:

    self.label.text = @"Hey! \uE800";
    

    如果iOS找不到的字符 H 在您的字体中,它将回落到默认字体。你可能需要更多的控制,这样你就可以混合和匹配字体,并为每个字符选择合适的字体。如果您想要这种控制,请参阅 Session 223: Using Fonts with Text Kit 来自WWDC 2013。其中一些仅适用于iOS 7。对于iOS 6,您可能必须使用 NSAttributedString(非属性字符串) 并正确设置每个范围的字体。

        2
  •  1
  •   Erken    11 年前

    在Swift中,步骤完全相同,但最终代码现在看起来是这样的:

    self.label.text = "Hey! \u{E800}"