PaintCode调研

 

1.   背景

PaintCode是一款面向iOS和Mac应用开发者及设计师的矢量图形可视化开发工具。它可让设计师把设计好的psd文件直接导入该工具,而后生成用Quartz 2D 产生的object-c代码。直接供程序员使用,而省略了图片资源。程序员

1.1主要功能

  1. 直接生成适用于iOS的Objective-C代码,节省了大量的编程时间。
  2. 生成的代码支持ARC/MRC,iOS5+/6+/7+.
  3. 能够控制图片生成的Frame、颜色等变量来动态生成须要所须要的图片。

1.2 相关资料:

官网:http://www.paintcodeapp.com/编程

http://blog.csdn.net/lujunelong/article/details/18899913数组

2.   实验数据

2.1实验一:复杂图片

背景:采用一张较为复杂的图片, 400*400。体积为:37k。缓存

  只提供了2X的图片(已压缩);支持armv7 armv7s arm64。app

 

 

paintCode工具

UIImage性能

安装包大小开发工具

342k测试

379k优化

占用内存

3.4M

3.8M

real mem:

12.25M

13.3M

耗时

0.054807(跟踪发现就一个地方耗时)

0.0087

描述:

  1. 安装包大小在paintCode下有明显减少(即便已经支持了arm64,仍然能减少,且图片尚未支持1x和3x的图片效果明显)
  2. real men和占用内存paintCode都有明显减少
  3. 耗时有较大提高。性能差距加大。

2.2 实验二:简单图片

背景:采用一张较为简单的图片, 224*90。体积为:2k。

      

安装包大小

paintCode(armv7 armv7s arm64)

UIImage(armv7 armv7s arm64)

1份代码or图片

380k

381k

3份代码or图片

396k

385k

 

安装包大小

paintCode(armv7)

UIImage(armv7)

1份代码or图片

215k

217k

3份代码or图片

216k

221k

 

描述:

  1. 若是仅仅是打armv7的包,使用paintCode安装包大小有减少。有收益。
  2. 针对简单图片作了3份,使用paintCode在同时支持arm64的状况下,体积收益不必定要大于使用图片。

2.3 实验三:耗时测试

背景: 复杂图片就如实验一,简单图片资源参考图片二

方式

耗时(秒)

简单button的paintCode

0.006329

imageWithContentsOfFile

0.000797

imageNamed(第一次)

0.009291

复杂paintCode

0.061804

描述:

  1. 复杂的paintCode耗时会较长。
  2. 简单button的PaintCode耗时数量级在毫秒级
  3. 一份代码能够支持多个屏幕,针对Iphone6,iphont6+没有体积增长。
  4. 显示效果较好,矢量拉伸。
  5. 有效减少内存使用。
  6. 在复杂大图下,能够有效减小安装包大小。
  7. 若是针对armv7 arm64进行编译,跟直接使用图片比浪费体积。
  8. 生成UIImage耗时比使用直接图片时间长。

3.   风险点&优点

3.1 优点

  1. 一份代码能够支持多个屏幕,针对Iphone6,iphont6+没有体积增长。
  2. 显示效果较好,矢量拉伸。
  3. 有效减少内存使用。
  4. 在复杂大图下,能够有效减小安装包大小。
  5. 若是针对armv7 arm64进行编译,跟直接使用图片比浪费体积。
  6. 生成UIImage耗时比使用直接图片时间长。

3.2 劣势

  1. 若是针对armv7 arm64进行编译,跟直接使用图片比浪费体积。
  2. 生成UIImage耗时比使用直接图片时间长。

 

4.   进一步优化

为了解决耗时问题, 给paintCode生成的图片作一个缓存,缓存到磁盘。下次使用直接取缓存。提高效率。

备注:

  1. 使用文件名+尺寸+特殊参数组成图片名称存储到磁盘中。
  2. 缓存的图片不要进入icloud。让每一个机器分别建立。
  3. 缓存的图片加入一个过时淘汰机制,注意尽可能不要让应用中全部图片在同一时间重建。
  4. 进入加入Server开关,能够强制客户端缓存清除。

5.   总结

PaintCode能够对内存大小、安装包大小的控制起到必定做用。但它仍是有不少的限制因素。

5.1建议使用PaintCode的场景:

  1. 图片较为复杂、体积较大。
  2. 要为不一样屏幕生成多套图片。

 

好比:首页启动的Loading图片。新手引导。

相关文章
相关标签/搜索