自定义字体的UIFont因Nil而失败

时间:2012-01-28 17:21:27

标签: iphone objective-c uifont custom-font

我正在尝试在Xcode 4.2中为我的项目添加自定义字体,但每当我尝试使用它时,我都会收到对象为零的错误。

我做了以下事项:
1)在应用程序'value:“LCDMono2 Ultra.ttf”提供的.plist'字体中添加了一行“ 2)将字体添加到我的支持文件中并在XCode中显示以验证它是否已添加 3)使用获取信息验证全名为“LCDMono2 Ultra”
4)用我的项目创建字体:

UIFont *myFont = [UIFont fontWithName:@"LCDMono2 Ultra" size:16];

我试过这个变种:

UIFont *myFont = [UIFont fontWithName:@"LCDMono2 Ultra" size:16.f];

5)尝试使用字体名称(addObject:myFont.fontName),生成'nil'错误。

可能导致错误的原因是什么?它可能就像名字中的空格一样吗?

7 个答案:

答案 0 :(得分:13)

将字体添加到项目后,自动删除了字体全名中的空格。我检查了原始字体文件,空间就在那里,所以Apple一定不想处理空格。我将引用更改为“LCDMono2Ultra”,它可以工作。

答案 1 :(得分:11)

我有几个小时的完全相同的问题,并尝试了以上所有,没有工作,字体被添加到应有的地方,我甚至尝试过在其他应用程序中工作的字体,但似乎从未添加过到这个应用程序。

似乎Xcode 5中的某些内容发生了变化,必须在信息选项卡下的目标属性中添加字体才能使用此功能,而之前必须将它们添加到“appName-info.plist”中,请参阅下图:< / p>

希望这有助于其他人。

enter image description here

答案 2 :(得分:2)

您是否已插入断点并检查您是否获得了myFont的有效UIFont对象。这值得检查,因为最有可能的问题是“LCDMono2 Ultra”实际上是字体系列名称,您想要使用的是“LCDMono2 Ultra-normal”或“LCDMono2 Ultra-bold”。使用Font Book打开你的.ttf,看看它给你的信息。

或者,如果您在Font Book中找不到任何内容,可以尝试致电:

NSArray *fonts = [UIFont fontNamesForFamilyName:"LCDMono2 Ultra"];

然后只需在调试器中打印数组字体以检查它们应该是什么。

希望有这个帮助,如果这不起作用,请告诉我,我会尝试考虑别的事情:)

答案 3 :(得分:1)

找到您的字体(可能使用其他名称)并使用此名称。

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

答案 4 :(得分:0)

我的字体文件是“Futura Heavy.ttf”,然后我使用-替换下面的空格然后它就可以了!

    class func futuraHeavy() -> UIFont {
        return UIFont(name: "Futura-Heavy", size: 12)!
    }

答案 5 :(得分:0)

请确保将字体的文件扩展名作为plist“应用程序提供的字体”名称的一部分。

答案 6 :(得分:0)

就我而言,除了字体粗细之前的一个,我需要从字体名称中删除所有多余的连字符:

    UIFont(name: "SF-Pro-Display-Semibold", size: 15) // fails
    UIFont(name: "SFProDisplay-Semibold", size: 15) // succeeds