1
我發現了一個將SVG圖像直接轉換成代碼的程序。聽起來像是iOS應用程序大小問題的史詩般的解決方案,但這裏出現一些障礙。 將複雜圖像繪製成4k +的硬核代碼行。其大約100 kB的純文件大小几乎等於初始PNG圖像大小。iOS代碼圖和png
所以這個問題 - 是否有任何點(總應用程序大小增益)繪製這樣的圖像從代碼或更好地包括工程中的EM作爲正常的PNG?代碼大小和二進制大小之間的比例是多少?或者我怎麼計算它?
我發現了一個將SVG圖像直接轉換成代碼的程序。聽起來像是iOS應用程序大小問題的史詩般的解決方案,但這裏出現一些障礙。 將複雜圖像繪製成4k +的硬核代碼行。其大約100 kB的純文件大小几乎等於初始PNG圖像大小。iOS代碼圖和png
所以這個問題 - 是否有任何點(總應用程序大小增益)繪製這樣的圖像從代碼或更好地包括工程中的EM作爲正常的PNG?代碼大小和二進制大小之間的比例是多少?或者我怎麼計算它?
經過多次研究,我發現UIBezierPath解決了我的問題相當不錯。 是的,UIBezierPath只是基於CPU的CoreGraphics的一個包裝,但正如Apple所建議的那樣 - 爲您的目的使用最高級別的抽象,並讓系統完成工作。
使用UIBezierPath繪製矢量圖像的性能對於任何2D界面元素都足夠高。 正如我所測試的 - 即使對於最難拍攝的圖像,視網膜顯示的速度因素也是45-50 fps,這對於原始UI動畫已經足夠了。
所以判決是 - 使用代碼繪製您的界面可以節省內存和神經。
我認爲性能考慮更重要。 drawRect使用繪圖的軟件代碼,與由GPU處理的UIKIt Image相比效率較低。 –
Kunal,正如我測試的那樣 - 從代碼繪製比純圖像插入要快。首先,你需要從捆綁中獲取圖像。 即使在商業應用中,快速渲染也不急於 - 0.02秒或0.002--並不太重要。 – Mehdzor
我不知道你是如何得出這個結論的。你不能只比較兩個函數並根據這個函數得出結論。您的drawRect運行在您希望效率更高的主線程上。 http://stackoverflow.com/questions/14659563/to-drawrect-or-not-to-drawrect-when-should-one-use-drawrect-core-graphics-vs-su –