Font Awesome在iOS中的使用和注意事项

1. 什么是Font Awesome?

简单说,它是一套图标字体库。 在iOS中用UILabel显示图标,就不用UI设计师切图了。究其原理,实际Font Awesome就是一套字体,只是显示出来的样子不是我们常见的文字。通过Unicode去显示实际样式,和汉字显示是一样一样的。

Sample

2. Font Awesome在iOS工程中使用

2.1 官网下载字体库

要在iOS工程中使用,首先得在官网上下载对应字体库(.otf/.ttf)。
点击进入官网
这是中文官网
英文官网字体库下载直通车
注意: 中文官网版本落后于英文官网

2.2 Xcode工程设置

第一步: 把下载好的字体库中的.otf文件拖入工程。
我选用的是 「Font Awesome 5 Free-Solid-900.otf」
注意: 拖入时要勾选工程,否则工程引用不到。如果引用成功,可以在Build Phase中看到:

Sample

第二步: 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

Sample

4. 注意事项

4.1 otf文件名不是字体库名

上面已经说过,切记。

4.2 免费版(Free)和收费版(Pro)

Font Awesome官网提供免费版和收费版字体库。免费版提供一千五百多个图标(version5.8.1),收费版提供五千多个。一般情况下免费版就够用了,如果不够,就付费用Pro版,或者让劳驾UI设计师切图。

4.2 显示异常的两种情况

在使用过程中,如果哪个步骤有误,可能会出现两种显示异常的情况:
第一种: 图标显示一个问号“?”。
第二种: 图标显示三个点“···”。

第一种错误的原因,是没有找到字体库或者字体库中没找到对应的图标。这就要检查字体库文件是否正确引入到工程、plist文件是否添加了字体库、代码中FontName是否正确、代码中因使用图标的Unicode是否正确。

第二种错误的原因,字体设大了,比UILabel的Frame大,显示不下了。

5. 例程

iOS例子工程(GitHub)

完结!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值