内容简介:工程大小优化之图片资源
工程大小优化之图片资源
摘要: 点点iOS项目本身功能较多,导致应用体积也比较大。一个Xcode工程下图片资源占用了很大的空间,且如果有些App需要一键换肤功能,呵呵,不知道得做多少图片。每套图片还需要设置1x@,2x@,3x@等
简介
IconFont技术起源于Web领域的Web Font技术。随着时间的推移,网页设计越来越漂亮。但是电脑预装的字体远远无法满足设计者的要求,于是Web Font技术诞生了。一个英文字库并不大,通过网络下载字体,完成网页的显示。有了Web Font技术,大大提升了设计师的发挥空间。
网页设计中图标需要适配多个分辨率,每个图标需要占用一次网络请求。于是有人想到了用Web Font的方法来解决这两个问题,就是IconFont技术。将矢量的图标做成字体,一次网络请求就够了,可以保真缩放。解决这个问题的另一个方式是图片拼合的Sprite图。
Web领域使用IconFont类似的技术已经多年,当我在15年接触BootStrap的时候Font Awesome技术大行其道。最近IconFont技术在iOS图片资源方面得以应用,最近有点时间自己研究整理了一番,在此记录学习点滴。
优点
- 减小体积,字体文件比图片要小
- 图标保真缩放,解决2x/3x乃至将来的nx图问题
- 方便更改颜色大小,图片复用
缺点
-
只适用于
纯色icon
- 使用unicode字符难以理解
- 需要维护字体库
网上说了一大堆如何制作IconFont的方法,在此不做讨论。
我们说说怎么用
- 首先选取一些有丰富资源的网站,我使用阿里的IconFont多年,其他的没去研究,所以此处直接使用阿里的产品。地址: http://www.iconfont.cn/plus
- 打开网站在线挑选好合适的图标加入购物车,如图
- 选择好之后在购物车查看,然后点击下载代码
-
打开下载好的文件,其机构如下,我们在iOS项目开发过程中使用unicode的形式使用IconFont,所以打开demo_unicode.html
- 注意:创建 UIFont 使用的是字体名,而不是文件名;文本值为 8 位的 Unicode 字符,我们可以打开 demo.html 查找每个图标所对应的 HTML 实体 Unicode 码,比如: "店" 对应的 HTML 实体 Unicode 码为:0x3439 转换后为:\U00003439 就是将 0x 替换为 \U 中间用 0 填补满长度为 8 个字符
Xcode中使用IconFont
初步尝试使用
- 首先看看如何简单实用IconFont
- 首先将下载好的文件夹中的 iconfont.ttf 加入到Xcode工程中,确保加入成功在Build检查
- 怎么用?
NSMutableAttributedString *attributedStr = [[NSMutableAttributedString alloc] initWithString:@"\U0000e696 \U0000e6ab \U0000e6ac \U0000e6ae"]; [attributedStr addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(0, 1)]; [attributedStr addAttribute:NSForegroundColorAttributeName value:[UIColor orangeColor] range:NSMakeRange(3, 1)]; [attributedStr addAttribute:NSForegroundColorAttributeName value:[UIColor blackColor] range:NSMakeRange(9, 1)]; self.label.attributedText = attributedStr; [self.view addSubview:self.label]; pragma mark - getter and setter -(UILabel *)label{ if (!_label) { _label = [[UILabel alloc] initWithFrame:CGRectMake(100, 100, BoundWidth-200, 40)]; _label.font = [UIFont fontWithName:@"iconfont" size:24]; _label.textColor = [UIColor purpleColor]; } return _label; }
做进一步封装,实用更加方便
- LBPFontInfo来封装字体信息
- UIColor+picker根据十六进制字符串来设置颜色
- LBPIconFont向系统中注册IconFont字体库,并使用
- UIImage+LBPIconFont封装一个使用IconFont的Image分类
效果图
Demo地址
https://github.com/FantasticLBP/IconFont_Demo
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- React Native图片资源使用的优美方案
- 前端解决第三方图片防盗链的办法 - html referrer 访问图片资源 403 问题
- 使用python对cocos2dx的手游图片资源进行加密
- js如何阻止图片的其他资源的加载(DOMContentLoaded)
- Nuxt资源文件夹,别名,图片url和css
- 【iOS 开发】将图片、声音等资源文件打包为 Bundle 的方法
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。