Re: [問題] Draw a string in a specific CALayer
※ 引述《zonble (zonble)》之銘言:
: 推 leondemon:謝謝Z大!CALayer的delegate是否不能是UIView? 04/13 23:03
就 stackoverflow 那篇的說法,主要原因是,一個 UIView
的原廠實作,就已經是一個 layer 的 delegate。
每個 UIView 裡頭都有一個 layer,而 view 就是這個 layer
的 delegate。所以,我們要繪製一個 view 的內容的時候,
其實是呼叫這個 layer 繪圖,這個 layer 的 drawInContext:
就會呼叫 view 的 drawLayer:inContext: ,最後呼叫到 drawRect:。
所以,如果你把一個 UIView 當成了另外一個 layer 的 delegate,
就要自行從 drawLayer:inContext: 所傳入的 layer 物件,來判斷到
底是哪一個 layer,決定應該畫怎樣的圖。大概有三種解法:
1. 在 drawLayer:inContext: 中寫一堆 if else
2. 把你的 layer 的 delegate 註冊到其他 object 上
3. subclass CALayer,實作 drawInContext:
我是覺得 3 比較方便。
順道一提,由於一個 view 的呈現,其實是上面的 layer 負責的。
所以,如果對這個 view 的 layer 呼叫 renderInContext:,然後
給一個 image context 進去,我們就可以拿到一個 view 的截圖了。
話說三月底的 cocoaheads 剛好整理了一個 coreanimation 的投影片
http://www.scribd.com/doc/51693714/Core-Animation
裡頭剛好有講到這些東西。
--
zonble.net
cocoa.zonble.net
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.42.192.132
推
04/14 00:37, , 1F
04/14 00:37, 1F
討論串 (同標題文章)