W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
????術(shù)語(yǔ)繪圖通常在Core Animation的上下文中指代軟件繪圖(意即:不由GPU協(xié)助的繪圖)。在iOS中,軟件繪圖通常是由Core Graphics框架完成來(lái)完成。但是,在一些必要的情況下,相比Core Animation和OpenGL,Core Graphics要慢了不少。
????軟件繪圖不僅效率低,還會(huì)消耗可觀的內(nèi)存。CALayer
只需要一些與自己相關(guān)的內(nèi)存:只有它的寄宿圖會(huì)消耗一定的內(nèi)存空間。即使直接賦給contents
屬性一張圖片,也不需要增加額外的照片存儲(chǔ)大小。如果相同的一張圖片被多個(gè)圖層作為contents
屬性,那么他們將會(huì)共用同一塊內(nèi)存,而不是復(fù)制內(nèi)存塊。
????但是一旦你實(shí)現(xiàn)了CALayerDelegate
協(xié)議中的-drawLayer:inContext:
方法或者UIView
中的-drawRect:
方法(其實(shí)就是前者的包裝方法),圖層就創(chuàng)建了一個(gè)繪制上下文,這個(gè)上下文需要的大小的內(nèi)存可從這個(gè)算式得出:圖層寬圖層高4字節(jié),寬高的單位均為像素。對(duì)于一個(gè)在Retina iPad上的全屏圖層來(lái)說(shuō),這個(gè)內(nèi)存量就是 204815264字節(jié),相當(dāng)于12MB內(nèi)存,圖層每次重繪的時(shí)候都需要重新抹掉內(nèi)存然后重新分配。
????軟件繪圖的代價(jià)昂貴,除非絕對(duì)必要,你應(yīng)該避免重繪你的視圖。提高繪制性能的秘訣就在于盡量避免去繪制。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: