1. 什么是Font Awesome?
简单说,它是一套图标字体库。 在iOS中用UILabel显示图标,就不用UI设计师切图了。究其原理,实际Font Awesome就是一套字体,只是显示出来的样子不是我们常见的文字。通过Unicode去显示实际样式,和汉字显示是一样一样的。
2. Font Awesome在iOS工程中使用
2.1 官网下载字体库
要在iOS工程中使用,首先得在官网上下载对应字体库(.otf/.ttf)。
点击进入官网
这是中文官网
英文官网字体库下载直通车
注意: 中文官网版本落后于英文官网
2.2 Xcode工程设置
第一步: 把下载好的字体库中的.otf文件拖入工程。
我选用的是 「Font Awesome 5 Free-Solid-900.otf」
注意: 拖入时要勾选工程,否则工程引用不到。如果引用成功,可以在Build Phase中看到:
第二步: info.plist文件设置。
在工程的plist文件中增加“Fonts provided by application”行。“Fonts provided by application”对应的是一个数组,添加一个item,value中填字体库文件名「Font Awesome 5 Free-Solid-900.otf」。
3. 代码中使用
UILabel *awesomeLabel = [[UILabel alloc] initWithFrame:CGRectMake(100, 100, 30, 30)];
awesomeLabel.font = [UIFont fontWithName:@"FontAwesome5Free-Solid" size:20];
awesomeLabel.text = @"\uf015";
[self.view addSubview:awesomeLabel];
以上代码就可以实现icon显示
3.1 Font Name "FontAwesome5Free-Solid"怎么来的?
"FontAwesome5Free-Solid"并不是字体库文件名。这是一个特定名称。可以用代码获取:
NSString *path = [[NSBundle mainBundle] pathForResource:@"Font Awesome 5 Free-Solid-900" ofType:@".otf"];
NSURL *fontUrl = [NSURL fileURLWithPath:path];
CGDataProviderRef fontDataProvider = CGDataProviderCreateWithURL((__bridge CFURLRef)fontUrl);
CGFontRef fontRef = CGFontCreateWithDataProvider(fontDataProvider);
CGDataProviderRelease(fontDataProvider);
CTFontManagerRegisterGraphicsFont(fontRef, NULL);
NSString *fontName = CFBridgingRelease(CGFontCopyPostScriptName(fontRef));
fontName就是字体库名。
3.2 Unicode @"\uf015"在哪里查找?
通过百度字体编辑器可以查看:百度字体编辑器
把otf拖入编辑窗口,就可以查看所有图标的Unicode
4. 注意事项
4.1 otf文件名不是字体库名
上面已经说过,切记。
4.2 免费版(Free)和收费版(Pro)
Font Awesome官网提供免费版和收费版字体库。免费版提供一千五百多个图标(version5.8.1),收费版提供五千多个。一般情况下免费版就够用了,如果不够,就付费用Pro版,或者让劳驾UI设计师切图。
4.2 显示异常的两种情况
在使用过程中,如果哪个步骤有误,可能会出现两种显示异常的情况:
第一种: 图标显示一个问号“?”。
第二种: 图标显示三个点“···”。
第一种错误的原因,是没有找到字体库或者字体库中没找到对应的图标。这就要检查字体库文件是否正确引入到工程、plist文件是否添加了字体库、代码中FontName是否正确、代码中因使用图标的Unicode是否正确。
第二种错误的原因,字体设大了,比UILabel的Frame大,显示不下了。
5. 例程
完结!