Objective c Can';t在视图层中捕获遮罩

Objective c Can';t在视图层中捕获遮罩,objective-c,ios,xcode,uiview,calayer,Objective C,Ios,Xcode,Uiview,Calayer,因此,我使用以下代码将图像遮罩应用于UIView层: CALayer *maskLayer = [CALayer layer]; UIImage *maskImage = self.image.image; maskLayer.contents = (id)maskImage.CGImage; maskLayer.frame = CGRectMake(0.0, 0.0,1235, 935); self.bgView.layer.mask = maskLayer; UIGraphicsBegin

因此,我使用以下代码将图像遮罩应用于UIView层:

CALayer *maskLayer = [CALayer layer];
UIImage *maskImage = self.image.image;
maskLayer.contents = (id)maskImage.CGImage;
maskLayer.frame = CGRectMake(0.0, 0.0,1235, 935);
self.bgView.layer.mask = maskLayer;
UIGraphicsBeginImageContext(captureFrame.size);
[self.bgView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageWriteToSavedPhotosAlbum(viewImage, nil, nil, nil);
一切都很好,很漂亮,遮罩覆盖了视图内容并起作用。然而,我正在尝试截图,让用户保存图像。我正在使用以下代码:

CALayer *maskLayer = [CALayer layer];
UIImage *maskImage = self.image.image;
maskLayer.contents = (id)maskImage.CGImage;
maskLayer.frame = CGRectMake(0.0, 0.0,1235, 935);
self.bgView.layer.mask = maskLayer;
UIGraphicsBeginImageContext(captureFrame.size);
[self.bgView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageWriteToSavedPhotosAlbum(viewImage, nil, nil, nil);
相框很好,并保存到照片库中。唯一的问题是,应用于该层的遮罩不会显示在JPG中。我还尝试将我的bgView嵌套到另一个UIView中,然后尝试
renderInContext:
那样做,但这是一样的。它只是看起来好像在最终JPG中没有应用掩码


有什么想法吗?谢谢。

这很不幸,但这就是它的工作原理。报告说:

。。。不渲染使用三维变换的图层,也不渲染指定背景过滤器、过滤器、合成过滤器或遮罩值的图层

CoreAnimation用于屏幕上的动画绘图;它不是一个通用的图形框架。试着改用CoreGraphics——这并不难,你会有更多的控制,你会得到更高质量的输出