因此,我使用以下代码将图像蒙版应用于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中应用该蒙版。

有任何想法吗?谢谢。

最佳答案

不幸的是,这就是它的工作原理。 documentation for -[CALayer renderInContext:] 说:

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

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

关于objective-c - 无法在 View 层中捕获蒙版,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9615235/

10-15 07:25