前言:写这篇文章纯粹是记录自己的使用过程以及一些疑问。iconfont之前一直是作为web页面替换按钮图片的方案,最近两年随着移动端的兴起,也渐渐有了相同的替换方案,这里推荐一个阿里的免费iconfont制作图库,可以在上面在线制作按钮。
在这之前,想先写点iconfont的优缺点分析一下。
优点:
1.也是用iconfont的直接原因,省时省力,大概就是不需要再往xcode里面拉X2,X3的图片了吧,也给美工节省了许多切图的时间。
2.矢量像素,不需要适配。
3.节约空间,很多页面,按钮多起来,整个api文件打包会很大,而iconfont是矢量的像素文件,所有的iconfont打包也还没有一张png图片大。
缺点:1.按钮只能是纯色,没法弄成一半黄一半绿的(ttf文件只能是一种颜色)。
2.忘记了,想起来再补充吧.
首先,使用iconfont还是挺简单的。只需要找一个iconfont制作网站,可以自己(美工)制作,也可以用别人做好的一套。这里用阿里的举例子,选择自己要用到的icon,然后加入购物车。再点击右侧的下载代码
打开下载的压缩包,里面会有很多字体文件的格式,我们Xcode能识别出来的是带.ttf后缀的。like this
将其拖入你的项目文件,并且要确保在项目的build Phases里面包含有它
另外,在项目的plist文件里面也需要添加字段,用来识别ttf文件
第二步:使用IconFont字体:
UILabel * label = [[UILabel alloc] initWithFrame:self.view.bounds];
UIFont *iconfont = [UIFont fontWithName:@"uxIconFont" size: 34];
label.font = iconfont;
label.text = @"\U00003439 \U000035ad \U000035ae \U000035af \U000035eb \U000035ec";
[self.view addSubview: label];。
这里有两个地方注意下:
创建 UIFont 使用的是字体名,而不是文件名;
文本值为 8 位的 Unicode 字符,我们可以打开 demo.html 查找每个图标所对应的 HTML 实体 Unicode 码,比如: "店" 对应的 HTML 实体 Unicode 码为:0x3439 转换后为:\U00003439 就是将 0x 替换为 \U 中间用 0 填补满长度为 8 个字符\n
后面的用法不想写了,网上很多,贴一个demo参考地址
结尾疑问:1.网上很多教程都是把Unicode写死的,本来我是想让后台返回那个字符串,然后根据字符串(\U0000XXX)来动态的修改图标的,但是" \ "这个在C语言里面是基本的转异符号,没办法替换,我暂时只有从本地定义宏,然后根据后台返回的字符串来替换。这种方式感觉不优雅,希望有好心人也能分享一下,使用iconfont动态替换图标的使用方案。