2010-01-06 67 views
3

我有UIView子類 - 實際上是一塊拼圖 - 有2個不同的CGLayer在initWithFrame初始化。在繪製之前設置CGLayer的「不透明度」?

在我的drawRect必須共混這兩層,和最上面的應具有可變阿爾法取決於遊戲邏輯。

什麼是最好的(最優化性能)的方式來做到這一點?有沒有任何CGLayer或CGContext函數在繪製之前設置一些alpha?

回答

6

設置該層的-opacity。請記住,圖層的-opaque設置必須爲NO。默認值爲NO,但由於性能原因,它通常設置爲YES。

如果你已經做-drawInContext:,那麼你就可以CGContextSetAlpha()實驗。不過,通常情況下,您不會同時使用-drawRect:和圖層。通常讓視圖或圖層進行繪製。

+0

你的意思是我應該創建一個獨立的例如。 - (void)renderView方法,並在那裏實現圖層? 然後[puzzlePiece setNeedDisplay]可以通過簡單的[puzzlePiece的RenderView]取代的? – Geri 2010-01-06 23:15:08

+0

這聽起來是正確的,如果你需要每次渲染視圖的所有部分。否則,我只會在模型類(數據)更改時重新渲染所需的圖層。沒有理由重繪一個圖層,因爲其他圖層需要重繪。 – 2010-01-07 00:24:26

+0

'課程。 拼圖實際上被分配一個PuzzlePiece的/ addSubview-ED實例:UIView類,所以只有最近用戶操縱的片得到重畫信息(上述的RenderView「是指」 renderPuzzleView)。 – Geri 2010-01-07 13:09:25