900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > IOS添加自定义字体

IOS添加自定义字体

时间:2021-01-26 10:57:40

相关推荐

IOS添加自定义字体

IOS添加自定义字体

参考:/s/blog_6f9a971801011ie9.html

准备:

字体文件(.ttf,.odf等)

方法1:

添加对应的字体(.ttf或.odf)到工程的resurce,使用cocos2d中的FontLabel库,FontLabel继承于UILabel,象UILabel一样使用就好了

fontName直接使用添加的资源名字即可

方法2:

1.添加对应的字体(.ttf或.odf)到工程的resurce,例如 “华文宋体.ttf”

2.在info.plist中添加一项 Fonts provided by application (item0对应的value为华文宋体.ttf,添加多个字体依次添加就可以了)

3.使用(由于原作者的讲述和一些注意事项没给出来,所有在这里进行补充,原文请参照上述链接)

UIFont* font = [UIFont fontWithName:@"STSong" size:30];

重点在于字体的名字。如果使用@"华文宋体.ttf",返回的是nil("华文宋体"、和"STSong.ttf"我都试过,返回的都是nil)。

而这个名字我们可以使用mac OS下的Font Book工具查找。如果是Foot Book中没有的字体,就先进行添加,然后找到这个字体的名字就可以了(这个没试过,我直接使用Font Book中已有的中文字体)。

或者使用原作者提供的笨方法,一个一个找。或者自己写个查找程序,对比下就应该可以了。

在这里再啰嗦两句。原作者说:

Mac下窗口的标题栏有字体的Family name,Windows下能显示Family name和Font name,下面这句用Family name和Font name都可以

self.labelTest1.font = [UIFont fontWithName:@"RETURN TO CASTLE" size:30];

其实不然。family name和font name是不同的。

self.familyNames = [UIFont familyNames]; // 获取所有的familyName

self.familyNames = [self.familyNames sortedArrayUsingSelector:@selector(stringCompare:)]; // 排序

self.fontNames = [[NSMutableArray alloc] init];

for (int i = 0, count = self.familyNames.count; i < count; ++i)

{

NSArray* fontArray = [UIFont fontNamesForFamilyName:[self.familyNames objectAtIndex:i]]; // 获取相应的familyName下的fontNames

[self.fontNames addObject:fontArray]; // 将fontName存入数组

}

然后用一个UITableView显示出来,可以看到familyName下面有好几个fontName。

中文字体也是一样,我实验了Font Book下的黑体(Heiti SC,iOS系统有自带Heiti TC),该字体的familyName为Heiti SC,而在其下还有分STHeitiSC-Medium和STHeitiSC-Light。(黑体显示的中文效果好像和系统自带的差不多,可能iOS本身就有Heiti TC吧。不过楷体就很明显了,宋体也不太明显。)

附上我做的一个简单的Demo。

/detail/likid1412/4526971

(ps:由于黑体的字体文件太大,所以就只加了楷体和宋体,项目中没有的那两个文件请自行删除吧。)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。