• 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。

     

     

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

  • 相关阅读:
    shell 基本系统命令,关机重启,查看版本,查手册,日期,磁盘,历史命令
    shell 命令 文件查看ls,复制cp,移动mv,查看文件内容cat more less,查看文件信息 file
    luoguP1850 换教室
    bzoj2091: [Poi2010]The Minima Game DP
    luoguP1281 书的复制 DP,贪心
    loj6068. 「2017 山东一轮集训 Day4」棋盘 二分图,网络流
    bzoj1133: [POI2009]Kon
    luogu3426 [POI2005]SZA-Template 后缀树
    loj#2483. 「CEOI2017」Building Bridges 斜率优化 cdq分治
    loj2353. 「NOI2007」 货币兑换
  • 原文地址:https://www.cnblogs.com/xitang/p/4088007.html
Copyright © 2020-2023  润新知