2012-06-18 31 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与面具?

特别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

一种方法可以是使用石英功能

使用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

当“renderInContenxt:”时,self.view.layer不会剪裁到它的遮罩层:〜( – OpenThread