Xcode增加新字体以及字体找不到的解决方法

这个在OC和cocos2d-x都适用,就是增加系统之外的字体,原理就是在工程中增加新的字体文件,比如*.ttf这种字体文件,在工程运行的时候,会到工程之中去寻找,而不用找系统的字体。

Xcode增加新字体的方法

在Xcode中增加新字体就是把字体拖进工程中,然后修改info.plist文件拓展。

在info.plist文件中,增加Fonts provided by application选项,后面跟着字体,可以直接写上字体名,也可以带路径。但是带路径的话,后面引用最好都带路径。后面我出的一个问题就是出在了这里。

屏幕快照 2015-08-23 13.59.57.png

新字体的使用

增加完字体之后,可以在相应的地方使用的时候注明要使用的字体即可,比如像下面这样使用新字体来定义label的字体。

屏幕快照 2015-08-23 14.00.43.png

新字体不能使用的解决方案

一、确保你的字体正确添加

要先判断info.plist文件是否添加正确,然后要确保已经引入工程。就是看你工程设置里德Build Phases选项里面,Copy Bundle Resources这个里面是否正确引入了字体,以及路径是否正确。

屏幕快照 2015-08-23 14.03.37.png

二、判断你添加的路径是否正确

我上次的问题就出现在路径这里,你如果在info.plist文件里面的字体带路径了,在工程相应地方引用的时候也要带路径,就像上面说的那个Label,并且注意你拖字体文件进工程的时候也要带路径,就想下面这样。

屏幕快照 2015-08-23 14.00.21.png

既然info.plist里面带路径,你这个引用到文件夹的时候,就要选择真实路径Create folder references,而不是创建groups,这个要注意了,否则就算引入正确,路径写错,他还是会使用系统默认字体。

屏幕快照 2015-08-23 14.22.54.png

三、确保你的字体名称正确

有的时候你引用的字体名称并不是真的字体名称,你要判断下。

在OC中可以通过下面这段代码输出下

NSArray *fontFamilies = [UIFont familyNames];
for (int i = 0; i < [fontFamilies count]; i++)
{
    NSString *fontFamily = [fontFamilies objectAtIndex:i];
    NSArray *fontNames = [UIFont fontNamesForFamilyName:[fontFamilies objectAtIndex:i]];
    NSLog (@"%@: %@", fontFamily, fontNames);
}


网上Alexander Bekert说了个方法在Swift中可以使用这个代码判断

let fontFamilies = UIFont.familyNames(); 
for familyName in fontFamilies 
{ 
let fontNames = UIFont.fontNamesForFamilyName(familyName as String); 
println("\(familyName): \(fontNames)"); 
}


看这里的代码输出是否有你的字体名称,比如说你引用的Damon-Light_0.otf,但是输出的时候输出的Damon-Light,那你使用的时候就只能用后面的这个,可以这样使用

UIFont *customFont = [UIFont fontWithName:@"Damon-Light" size:20];


Last modification:January 1st, 1970 at 08:00 am
如果看了这个文章可以让你少加会班,可以请我喝杯可乐
已打赏名单
微信公众号

Leave a Comment