我正在尝试在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'
错误。
可能导致错误的原因是什么?它可能就像名字中的空格一样吗?
答案 0 :(得分:13)
将字体添加到项目后,自动删除了字体全名中的空格。我检查了原始字体文件,空间就在那里,所以Apple一定不想处理空格。我将引用更改为“LCDMono2Ultra”,它可以工作。
答案 1 :(得分:11)
我有几个小时的完全相同的问题,并尝试了以上所有,没有工作,字体被添加到应有的地方,我甚至尝试过在其他应用程序中工作的字体,但似乎从未添加过到这个应用程序。
似乎Xcode 5中的某些内容发生了变化,必须在信息选项卡下的目标属性中添加字体才能使用此功能,而之前必须将它们添加到“appName-info.plist”中,请参阅下图:< / p>
希望这有助于其他人。
答案 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