2

我将如何从这里获取一个字符:http: //fontello.com/并在本机 iOS 7 应用程序中使用它以在 UILabels 或 UITextViews 中使用?

这是 NSAttributedString 的适当用途吗?

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

谢谢

4

2 回答 2

4

这很好,有或没有NSAttributedString. 您可以应用NSFontNameAttribute到某些范围,也可以只fontUILabel. 自定义字体与任何其他类型的字体没有什么不同(有点……稍后再说)。

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

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

在此处输入图像描述

然后你可以加载字体:

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

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

Fontello 会告诉你每个字形的代码。如果它说 U+E800,你会把它放在NSStringas 中@"\ue800"

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

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

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

于 2013-10-14T20:20:59.667 回答
1

在 Swift 中,步骤完全相同,但最终代码现在如下所示:

self.label.text = "Hey! \u{E800}"
于 2015-07-12T15:52:41.753 回答