[問題] Draw a string in a specific CALayer
想請教一個問題
我有一個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
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
04/06 08:30, 5F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 6 篇):
MacDev 近期熱門文章
PTT數位生活區 即時熱門文章