因此,我使用以下代码将图像蒙版应用到 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:] https://developer.apple.com/library/ios/#documentation/GraphicsImaging/Reference/CALayer_class/Introduction/Introduction.html#//apple_ref/doc/uid/TP40004500 says:
...使用 3D 变换的图层不会渲染,指定背景过滤器、过滤器、compositingFilter 或遮罩值的图层也不会渲染。
CoreAnimation 旨在用于屏幕上的动画绘图;它不是通用图形框架。尝试使用 CoreGraphics 来代替——这并不困难,您将拥有更多的控制权,并且您将获得更高质量的输出。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)