Re: [問題] Draw a string in a specific CALayer

看板MacDev作者 (zonble)時間13年前 (2011/04/13 23:36), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串3/6 (看更多)
※ 引述《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
最近也在研究Z大在cocoaheads的投影片
04/14 00:37, 1F
文章代碼(AID): #1DfSC3CW (MacDev)
討論串 (同標題文章)
文章代碼(AID): #1DfSC3CW (MacDev)