[問題] Draw a string in a specific CALayer

看板MacDev作者 (狗狗)時間14年前 (2011/04/05 16:44), 編輯推噓3(302)
留言5則, 2人參與, 最新討論串1/6 (看更多)
想請教一個問題 我有一個UIView的subclass 打算將其(CALayer*)layer內多疊幾層其他的CALayer 其中一個sublayer是專門要畫text用的 因為CATextLayer的string似乎是沒有anti-aliasing 而用NSString的NSString UIKit Additions Category的drawInRect:WithFont: 似乎不是畫在指定的Layer上? 而用CALayer的delegate method =>drawLayer:inContext: 似乎可以達到目的 但是我將該CALayer(畫text的)的delegate與最上層layer的delegate同一個時(UIView) 卻發生run-time時整個跳出,UIView在initialization時的code如下: self.contextLayer = [CALayer layer]; // contexstLayer為CALayer self.contextLayer.delegate = self; //將該layer的delegate設為UIView本身 [self.layer addSublayer:self.contextLayer]; //將該layer加到本身layer下 而我測試UIView底下的drawLayer:inContext:在還沒被invoked 就先跳出整個App 請問有什麼方法可以解決這個問題呢? 因為我需要該CALayer是因為不同的subclass可以去實作該layer要怎麼畫 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 120.126.38.191 ※ 編輯: leondemon 來自: 120.126.38.191 (04/05 16:44)

04/05 18:33, , 1F
你是為了加快繪圖的速度才這麼做的嗎?
04/05 18:33, 1F

04/05 18:37, , 2F
04/05 18:37, 2F

04/05 18:48, , 3F
04/05 18:48, 3F

04/05 18:49, , 4F
目前查到的文章,不傾向覆寫drawLayer:inContext:
04/05 18:49, 4F
謝謝! 因為我一個UIView其實內部含有不同的component 每次要display時 不是每個component都需要被redraw... 因此在設計上 我將不同的componenet以不同的CALayer加入原本最底層的layer 然後在drawRect的時候,只將某CALayer進行重畫 但是我不知道要如何-drawRect內部 去針對某個CALayer進行redraw.... 目前如果我直接在-drawRect內進行一些drawing code的話 都會被我其他的sublayer擋住 所以希望能將圖層的概念套在UIView的內部 只針對某層進行改變... 我看我再試試看 新弄一個NSObject當做delegate好了(不過記憶體管理就變得有點麻煩) ※ 編輯: leondemon 來自: 120.126.38.191 (04/05 18:58)

04/06 08:30, , 5F
CAxxx求快,CGxxx的求質量,需要高品質的繪圖還需CG系的。
04/06 08:30, 5F
文章代碼(AID): #1DcjPHbD (MacDev)
文章代碼(AID): #1DcjPHbD (MacDev)