请问一下有人遇到过 CAGradientLayer 无法截图的问题

2020-11-17 11:32:37 +08:00
 pptk

有什么解决方法吗

894 次点击
所在节点    iOS
1 条回复
pptk
2020-11-17 12:05:04 +08:00
已解决
//绘制渐变
UIColor *firstColor = [[UIColor alloc]initWithCGColor:(CGColorRef)self.bgLayer.colors.firstObject];
UIColor *lastColor = [[UIColor alloc]initWithCGColor:(CGColorRef)self.bgLayer.colors.lastObject];
//创建一个 RGB 的颜色空间
CGColorSpaceRef rgb = CGColorSpaceCreateDeviceRGB();
//定义渐变颜色数组
CGFloat colors[] = {
firstColor.qmui_red, firstColor.qmui_green, firstColor.qmui_blue, 1.00,
lastColor.qmui_red, lastColor.qmui_green, lastColor.qmui_blue, 1.00
};
CGGradientRef _gradient = CGGradientCreateWithColorComponents(rgb, colors, NULL, sizeof(colors)/(sizeof(colors[0])*4));
UIGraphicsBeginImageContextWithOptions(self.preImage.size, NO, self.preImage.scale);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextInspectContext(context);
CGPoint start = CGPointMake(self.preImage.size.width/2, 0);
CGPoint end = CGPointMake(self.preImage.size.width/2, self.preImage.size.height);
CGContextDrawLinearGradient(context, _gradient, start, end, kCGGradientDrawsBeforeStartLocation);

CGImageRef imageRef = self.preImage.CGImage;
CGImageRef subImageRef = CGImageCreateWithImageInRect(imageRef,CGRectMakeWithSize(self.preImage.size));
CGContextDrawImage(context, CGRectMakeWithSize(self.preImage.size), subImageRef);

UIImage *imageOut = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/726124

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX