无法在视图层内捕获蒙版

时间:2012-03-08 09:19:31

标签: 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;

一切都很好,花花公子,面具涵盖视图内容和工作。但是,我试图截取屏幕让用户保存图像。我正在使用以下代码:

UIGraphicsBeginImageContext(captureFrame.size);
[self.bgView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageWriteToSavedPhotosAlbum(viewImage, nil, nil, nil);

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

有什么想法吗?谢谢。

1 个答案:

答案 0 :(得分:3)

这很不幸,但这就是它的运作方式。 documentation for -[CALayer renderInContext:]说:

  

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

CoreAnimation适用于屏幕上的动画绘图;它不是通用的图形框架。尝试使用CoreGraphics - 它并不困难,您将拥有更多控制权,并且您将获得更高质量的输出。