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圖片。新手引導。

相關文章
相關標籤/搜索