作者zonble (zonble)
看板MacDev
标题Re: [问题] Draw a string in a specific CALayer
时间Wed Apr 13 23:36:33 2011
※ 引述《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
1F:推 starkite:最近也在研究Z大在cocoaheads的投影片 04/14 00:37