无法在视图图层中捕捉遮罩

所以我使用下面的代码将图像蒙版应用于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); 

框架是好的,并保存到照片库。 唯一的问题是应用于图层的蒙版不能在JPG中显示。 我也尝试嵌套我的bgView到另一个UIView,然后尝试renderInContext:但它是同样的事情。 它看起来好像在最后的JPG中没有应用蒙版。

有任何想法吗? 谢谢。

这是不幸的,但它是如何工作的。 -[CALayer renderInContext:]的文档说:

…不使用3D变换的图层,也不使用指定backgroundFilters,filters,compositingFilter或蒙版值的图层。

CoreAnimation适用于屏幕上的animation; 它不是一个通用的graphics框架。 尝试使用CoreGraphics–这并不困难,您将拥有更多的控制权,并且您将获得更高质量的输出。