如何采取一个层与遮罩层快照?(How to take a layer's snapshot

2019-09-18 05:17发布

我添加了一个口罩的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!

Answer 1:

解决这个问题的一个方法可以是使用Quartz功能

使用CGContextClipToMask(背景下,矩形,maskImage)的drawRect方法内

请参阅CGContextClipToMask例如链接求助



Answer 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);

我希望帮助你。



文章来源: How to take a layer's snapshot with mask layer?