2010-02-25 63 views
2

我嘗試在iphone中學習UIView中的繪圖過程。 據我瞭解,只有當方法[UIView drawRect]存在時,繪圖過程纔會生效。調用[UIView drawRect]被調用(準確地說:調用第一個[UIView drawLayer:layer inContext:context],並從該方法中調用[UIView drawRect])。CALayer並獲取其UIView的當前上下文

我有2個問題:

  1. 怎樣的[CALayer display]方法獲得的UIView的背景? (在[UIView drawLayer:layer inContext:context]使用[CALayer display]方法內)
  2. 怎樣的的CALayer的內容的更新會發生什麼? (這是在鏈接discribed這裏的更新:CALayer display])

回答

2

關於第一個問題,我寧願說,CALayer的創建背景下,CGContextRef的條款,然後把它傳遞給視圖,其是它的代表。 關於你的第二個問題,就像我觀察到的那樣,看起來CALayers非常接近硬件和視頻內存。實際上,如果將CGImageRef設置爲CALayer的內容,則將直接在顯示屏上顯示圖像(這是一項耗時的操作)。所以我猜CALayer從它的CGContextRef(被視圖填充的那個)獲取了一種圖像,然後把它作爲其內容。或者,也許創建的上下文直接在視頻內存中的空間,drawRect中的每個繪圖操作觸發對該內存的訪問...

雖然我不是這些過程的專家,但我只能猜測發生了什麼我見過的。 請注意,我說「視頻內存」,但我認爲iPhone上沒有這種東西,而是專門用於視頻操作的主要內存的一部分。該部分已被映射,您可以在Instruments中使用VMTracker查看消耗量。 同樣,我不確定,如果有人有更多的信息,我會很高興聽到!

相關問題