【发布时间】:2013-10-22 11:28:50
【问题描述】:
我将如何从此处获取一个字符:http://fontello.com/ 并在本机 iOS 7 应用程序中使用它以用于 UILabels 或 UITextViews?
这是 NSAttributedString 的适当用途吗?
谁有做这种工作的例子?
谢谢
【问题讨论】:
标签: ios fonts nsattributedstring
我将如何从此处获取一个字符:http://fontello.com/ 并在本机 iOS 7 应用程序中使用它以用于 UILabels 或 UITextViews?
这是 NSAttributedString 的适当用途吗?
谁有做这种工作的例子?
谢谢
【问题讨论】:
标签: ios fonts nsattributedstring
不管有没有NSAttributedString,这都很好。您可以将NSFontNameAttribute 应用于某些范围,或者您可以只在UILabel 上分配font 属性。自定义字体与任何其他类型的字体没有什么不同(有点……稍后再说)。
所以基础知识。创建你的字体文件。您关心的部分是 TTF(True Type 字体)。将其复制到您的应用程序中,并确保它在“复制”阶段被复制。 (如果您将其放入应用程序并将其添加到目标,它会自动执行此操作。)
将其添加到目标的信息窗格中。这是“应用程序提供的字体”设置,它是一个数组:
然后你就可以加载字体了:
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 并正确设置每个范围的字体。
【讨论】:
在 Swift 中,步骤完全相同,但最终代码现在如下所示:
self.label.text = "Hey! \u{E800}"
【讨论】: