13.1 軟件繪圖

2018-02-24 15:07 更新

軟件繪圖

????術(shù)語繪圖通常在Core Animation的上下文中指代軟件繪圖(意即:不由GPU協(xié)助的繪圖)。在iOS中,軟件繪圖通常是由Core Graphics框架完成來完成。但是,在一些必要的情況下,相比Core Animation和OpenGL,Core Graphics要慢了不少。

????軟件繪圖不僅效率低,還會消耗可觀的內(nèi)存。CALayer只需要一些與自己相關(guān)的內(nèi)存:只有它的寄宿圖會消耗一定的內(nèi)存空間。即使直接賦給contents屬性一張圖片,也不需要增加額外的照片存儲大小。如果相同的一張圖片被多個圖層作為contents屬性,那么他們將會共用同一塊內(nèi)存,而不是復制內(nèi)存塊。

????但是一旦你實現(xiàn)了CALayerDelegate協(xié)議中的-drawLayer:inContext:方法或者UIView中的-drawRect:方法(其實就是前者的包裝方法),圖層就創(chuàng)建了一個繪制上下文,這個上下文需要的大小的內(nèi)存可從這個算式得出:圖層寬圖層高4字節(jié),寬高的單位均為像素。對于一個在Retina iPad上的全屏圖層來說,這個內(nèi)存量就是 204815264字節(jié),相當于12MB內(nèi)存,圖層每次重繪的時候都需要重新抹掉內(nèi)存然后重新分配。

????軟件繪圖的代價昂貴,除非絕對必要,你應(yīng)該避免重繪你的視圖。提高繪制性能的秘訣就在于盡量避免去繪制。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號