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。

 

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图片。新手引导。

PaintCode调研的更多相关文章

  1. CMS模板应用调研问卷

    截止目前,已经有数十家网站与我们合作,进行了MIP化改造,在搜索结果页也能看到"闪电标"的出现.除了改造方面的问题,MIP项目组被问到最多的就是:我用了wordpress,我用了织 ...

  2. 记lrd的高二上学期第五次调研考试

    河北某某中学的调研考试其实是很好玩的经历呢.可惜没有太多机会了. 背景: NOIP2016回来之后没有好好学文化课-.自习能翘就翘了,衡中特产学案自助没有好好写(说来我好像从来没被老师查到过,上课写学 ...

  3. 《Kafka Stream》调研:一种轻量级流计算模式

    原文链接:https://yq.aliyun.com/articles/58382 摘要: 流计算,已经有Storm.Spark,Samza,包括最近新起的Flink,Kafka为什么再自己做一套流计 ...

  4. OpenStack调研:OpenStack是什么、版本演变、组件关系(Havana)、同类产品及个人感想

    一点调研资料,比较浅,只是觉得部分内容比较有用,记在这里: 首先,关于云计算,要理解什么是SAAS.PAAS.IAAS,这里不述:关于虚拟化,需要知道什么是Hypervisor,这里也不述: Open ...

  5. Beta版本——用户试用与调研报告

    1 引言 1.1 系统概述 ​ 毕设导师智能分配系统是一个用来简化传统手工匹配繁琐操作的系统.本系统将学生报志愿.系负责人收集整理数据.相关人员进行手工分配.反馈选择结果等繁琐的操作转移到线上.把毕设 ...

  6. 移动Web开发调研

    背景 在移动互联网浪潮下,移动设备普及,对配置需要考虑移动端设备可访问性.Web作为最贴近用户的配置手段,面向从PC端传统页面,向移动端页面的转型. 概念 PC Web: 面向传统PC电脑的浏览器开发 ...

  7. Web自动化测试工具调研

    背景 Web自动化测试越来越被重视, 因为现在Web已经是工程化的状态. 如何通过工具测试, 保证Web开发的质量,提升开发效率,是Web工具的诞生的来由. Web测试分为以下几个方面: 1. 界面测 ...

  8. Postgresql-xl 调研

    Postgresql-xl 调研 来历 这个项目的背后是一家叫做stormDB的公司.整个代买基于postgres-xc.开源版本应该是stormdb的一个分支. In 2010, NTT's Ope ...

  9. 请各位帮帮忙:Android LBS应用——CityExplorer (v1.0) 调研

    Hello哇各位亲!! 请各位帮帮忙:Android LBS应用——CityExplorer(V1.0)调研 嗯,这个事情是这样的,要填一个调查问卷,但是问卷中部分问题是关于这个叫做CityExplo ...

随机推荐

  1. juqery easyui

    私人做程序开发一直有个头疼的问题就是后台管理界面,以前一般都是自己用jquery+ps自己设计的,效果很一般,很不理想. 今天初次使用Jquery EasyUi,简单的做了个布局页面感觉还不错,给大家 ...

  2. 【代码】verilog之:按键消抖

    此模块完美运行 /*-------------------------------------------------------------------------------------- -- ...

  3. 最大流 总结&&做题记录

    最近一直很忙,为了节省时间,从今以后的题解会 一个专题 写一篇. 刷了一些题后,有了以下总结: 模型要点: 1.构造流量平衡,在满足流量平衡的情况下,找到要让什么最大. 2.一般用于判断性问题,即所有 ...

  4. enmo_day_02

    Secure CRT, putty, 等终端工具 DML :u, d, i, m 增,删,改,合并 DDL : DCL : DQL : 数据字典 :存放在数据文件中,SYSTEM表空间里,纪录数据的变 ...

  5. java.io.IOException: Too many open files

    1.描述: 每日一样,例行打开hadoop集群的cloudera manager的管理界面.发现出现了多个bad health的服务.那么出现的这个问题就是查看该服务运行的日志,对应的该服务当中,会包 ...

  6. Android ContentResolve使用

    在Android中使用ContentResolve访问其他程序的数据: http://developer.android.com/reference/android/content/ContentPr ...

  7. 在Hibernate中配置Hilo进行数据绑定测试时出错:org.hibernate.MappingException: Could not instantiate id generator

    在进行学习具体类单表继承时使用hilo类型时总是在调度过程中提示如下信息,无法通过.留下记录备查. 在网上找相关信息, 未解决,详细如下: org.hibernate.MappingException ...

  8. decimalFormat(小数格式)

    这个格式是用来形容小数的,所以只对小数部分起作用 0 一个数字 # 一个数字,不包括 0 (0和#就是一个占位符,有几个就意味着要显示多少位,区别是0 匹配任意数字,#匹配不包括0的任意数字(最后的0 ...

  9. 使用 CSS 去掉 iPhone 网页上按钮的超大圆角默认样式

    使用 iPhone 上的浏览器去浏览网页的时候,按钮总是显示超大圆角的样式,显得超级恶心,但是我们自己定义 border-radius 为 0 也无法去除这个圆角,经过搜索发现这是 webikt 内核 ...

  10. POJ 3176 简单DP

    Cow Bowling Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 16448 Accepted: 10957 Descrip ...