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

时间:2013-10-14 19:44:45

标签: ios fonts nsattributedstring

如何从这里获取角色:http://fontello.com/并在原生iOS 7应用程序中使用它以在UILabels或UITextViews中使用?

这是否适用于NSAttributedString?

任何人都有做这类工作的例子吗?

感谢

2 个答案:

答案 0 :(得分:4)

这没关系,有或没有NSAttributedString。您可以将NSFontNameAttribute应用于特定范围,也可以只在font上分配UILabel属性。自定义字体与任何其他类型的字体没有什么不同(稍等一点......)。

所以基础知识。创建您的字体文件。你关心的作品是TTF(True Type字体)。将其复制到您的应用程序中,并确保在“复制”阶段复制它。 (如果您将其放入应用程序并将其添加到目标中,它会自动执行此操作。)

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

enter image description here

然后你可以加载字体:

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

请记住,Info中的名称是文件名。 fontWithName:size:中的名称是字体名称。它们可以不同,尤其是重命名文件时;这不会重命名字体。

Fontello会告诉你每个字形的代码。如果它显示为U + E800,则会将其放在NSString作为@"\ue800"

您可能会创建不包含其中所有字符的字体(这也会出现内置字体,但您通常不会注意到它或担心它)。您可以轻松地将这些内容混合到“普通”文本中,例如:

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

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

答案 1 :(得分:1)

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

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