1

当我们在 Storyboards 上设计 UILabel 时,我们可以将它们设置为 Attributed text,并且可以设置 Arial Narrow 字体。但是当我们使用上面的代码时,以编程方式:

   NSRange auxRange = NSMakeRange(0, [myString length]);
   NSMutableAttributedString *attrStr = [myLabel.attributedText mutableCopy];
   UIFont *newFont = [UIFont fontWithName:@"Arial Narrow" size:17];
   [attrStr addAttributes:@{ NSFontAttributeName : newFont } range:auxRange];
   myLabel.attributedText = attrStr;

我们有一个指向 nil 的 newFont 指针,这是因为编译器无法找到 Arial Narrow 作为字体名称。

我的问题是,为什么我们可以在 Storyboard 上设置 Arial Narrow 而我们不能在代码上做同样的事情?如果可能的话,我做错了什么?

4

4 回答 4

4

打印手机的字体列表:

for (NSString *familyName in [UIFont familyNames]) {
        for (NSString *fontName in [UIFont fontNamesForFamilyName:familyName]) {
            NSLog(@"%@", fontName);
        }
    }

然后检查要添加的字体的名称,它必须在那里。

完全按照您看到的打印名称使用该名称。

于 2013-10-08T14:27:49.047 回答
1

我很惊讶 Storyboard 编辑器允许您选择 Arial Narrow。它不适合我。

在 iOS6 中,如果不使用自定义字体,Arial Narrow 将不可用。您可以在此处找到 iOS6 中可用的字体列表。正如在WWDC 会议中关于使用 TextKit 使用字体的简要介绍,iOS7 增加了对可下载字体的支持。这包括Arial Narrow 可用的所有 OS X 字体。

因此,据我所知,要使用 Arial Narrow,您有几个选择,具体取决于您所针对的 iOS 版本。您可以将它与您的应用程序捆绑在一起(这将适用于 iOS6 和 iOS7),或者您可以编写代码以使用内置支持来下载和使用字体(这将需要 iOS7)。

于 2013-10-08T14:56:12.180 回答
1

如果在尝试@Antonio MG 的答案后您没有看到您想要的字体,您必须自己提供该字体。

首先,找到*.ttf字体文件并将其添加到您的应用程序包中

其次,将文件名添加到应用程序提供的字体列表中:

在此处输入图像描述

然后

在此处输入图像描述

编辑:只是为了完整性。以下是获取真实字体名称的方法:

  1. 打开字体书

  2. 找到你想要的字体

  3. 点击“信息”按钮

  4. 使用“PostScript 名称”下的名称

在此处输入图像描述

最后,您将能够以编程方式在应用程序中使用该字体。

希望这可以帮助!

于 2013-10-08T16:31:17.900 回答
1

Interface Builder 显示安装在 OS X 系统上的字体列表,而不是 iOS 上可用的字体。

作为旁注,您为什么使用 Arial Narrow?看看 iOS 上的 HelveticaNeue-Light。

于 2013-10-08T16:37:46.050 回答