2013-10-11 1 views
0

У меня есть базовый слой, замаскированный прозрачным слоем маски.Удалить из маски CALayer?

Слой маски имеет подуровень, прозрачный круг. Отлично работает, базовый слой замаскирован кружком.

Но я хочу очистить (обнулить) пиксели маски с кругом. Не заполнять. Можете ли вы получить то, что я хочу?

Как?


enter image description here

Вы можете увидеть альфа-каналы маски изображений здесь.


Это 60 кадров в секунду анимации, поэтому выделение экземпляров/пользовательский рисунок каждый кадр я думаю, что это не решение, что бы сократить производительность.

+0

Слишком сложная формулировка вопроса ... (?) – Geri

ответ

0

через пользовательский чертеж в подклассе CALAyer (по крайней мере, на iOS, не имеющем никакого CIFilter для смешивания). Именно этого я и хотел избежать. :(

Есть много способов, но самые простые, кажется, используют режим прозрачной смеси.

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

даже не нужна никакая вырезки или маскировку. Может быть, я прирост производительности кэша на пути визуализация .