如何使用遮罩层拍摄图层的快照?

时间:2012-06-18 03:10:29

标签: iphone quartz-graphics

我在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!

2 个答案:

答案 0 :(得分:2)

解决此问题的一种方法是使用 Quartz 函数

在drawRect方法中使用CGContextClipToMask(context,rect,maskImage)

请参阅CGContextClipToMask example链接以获取帮助

答案 1 :(得分: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);

我希望能帮助你。