2013-10-11 84 views
0

我有一個基礎層,用透明遮罩層遮罩。從CALayer掩碼清除?

面具層有一個子層,一個透明的圓圈。 工作正常,基礎層用圓圈遮罩。

但我想用圓圈清除(清零)遮罩像素。不能滿足。 你能得到我想要的東西嗎?

怎麼樣?


enter image description here

你可以看到這裏的屏蔽圖像的alpha通道。


這是一個60 fps的動畫,所以分配情況/自定義繪製每一幀,我認爲是不是一個解決方案,這將降低性能。

+0

太複雜的問題措辭...(?) – Geri

回答

0

在CALAyer子類中(至少在iOS上,沒有用於混合的任何CIFilter),可以通過定製繪圖執行。正是我想避免的。 :(

的方法有很多,但最簡單的似乎使用了清晰的混合模式。

// Draw with Clear (!) blend mode. 
CGContextSetBlendMode(context, kCGBlendModeClear); 
CGContextSetFillColorWithColor(context, self.color.CGColor); 
CGContextFillPath(context); 

甚至不需要任何裁剪或屏蔽。也許我會通過緩存提升性能的路徑效果圖