UIView的繪製原理 和 異步繪製的實現

UIView 繪製原理

       1、當我們調用【UIView setNeedsDisplay】這個方法時,其實並沒有立即進行繪製工作,系統會立即調用CALayer的同名方法,並且在當前layer上打上一個標記,然後會在當前runloop將要結束的時候調用CALayer display  這個方法,然後進入視圖的真正繪製過程

       2、在【CALayer display】這個方法的內部實現中會判斷這個layer的delegate是否響應displaylayer 這個方法,如果不響應這個方法,就回到系統繪製流程中,如果響應這個方法,那麼就會爲我們提供異步繪製的入口

異步繪製

       1、假如我們在某一時機調用了【view setNeedsDisplay】這個方法,系統會在當前runloop將要結束的時候調用【CALayer display】方法,然後如果我們這個layer代理實現了displaylayer這個方法

       2、然後切換到子線程去做位圖的繪製,主線程可以去做其他的操作

       3、在自吸納成中創建一個位圖的上下文,然後通過CoregraphIC API 可以做當前UI控件的一些繪製工作,最後再通過CGBitmapContextCreateImage()函數來生成一直CGImage圖片

       4、最後回到主線程來提交這個位圖,設置layer的contents 屬性,這樣就完成了一個UI控件的異步繪製

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章