2012-06-18 3 views
3

я добавил маску слоя UIView в:Как сделать снимок слоя с помощью слоя маски?

CGImageRef maskImageRef = [UIImage imageNamed:"Icon.png"].CGImage; 
CALayer maskLayer = [CALayer layer]; 
maskLayer.contents = (__bridge id)maskImageRef; 
self.layer.mask = maskLayer; 

Затем я использую этот код, чтобы получить снимок из UIView:

[self.layer renderInContext:mainViewContentContext]; 

Но маска не была втянута.

Как нарисовать self.layer с маской?

Special thx!

+0

Возможный дубликат [layer.renderInContext не учитывает layer.mask?] (Http://stackoverflow.com/questions/4896296/layer-renderincontext-doesnt-take-layer-mask-into-account) –

+0

layerA.renderInContext не будет отображать слой маски layerA в контексте – OpenThread

ответ

2

Один из способов исправить это может быть использование Quartz функции

Использование CGContextClipToMask (контекст, Прямоугольник, maskImage) внутри метода DrawRect

См CGContextClipToMask example ссылку помощи

+0

Есть ли демо-код? благодаря! – OpenThread

+0

http://stackoverflow.com/questions/1344767/how-to-draw-a-shape-on-top-of-a-uiimage-while-respecting-the-images-alpha-mask –

+0

Очень много работы делая это. Я должен обрабатывать преобразования на слое маски, основном слое и представлении. Я действительно использовал четыре дня, чтобы рисовать их с кварцером. – OpenThread

2

Вы должны скриншоте на экране попробуйте этот код:

CGRect screenRect =CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height-44); 
UIGraphicsBeginImageContext(screenRect.size); 

CGContextRef ctx = UIGraphicsGetCurrentContext(); 
[self.view.layer renderInContext:ctx]; 

UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

UIImageWriteToSavedPhotosAlbum(viewImage, self, nil, nil); 

Я надеюсь вам помочь.

+0

self.view.layer не будет прикрепляться к слою маски, когда он «renderInContenxt:»: ~ ( – OpenThread

Смежные вопросы