在我的应用程序中,我有一个向用户显示的图像和带有CoreGraphics自定义绘图的叠加视图。我想将覆盖在其上的图像保存到CameraRoll中。 那么我应该如何从现有的UIImage和自定义叠加视图中创建一个新的UIImage?
我尝试通过创建CGContextRef,将UIImage绘制到其中,然后将叠加视图的CALayer绘制到相同的上下文中来实现。但是我从这个上下文得到的UIImage就是白色背景上的叠加视图。它似乎没有保持透明度,只是用白色填充所有东西。
如何解决?
谢谢。
答案 0 :(得分:2)
如果我理解你的问题吧。你有两个观点
如果在viewC上创建另一个视图(即viewC)addSubview viewA和viewB。
[viewC addSubview:viewA]
[viewC addSubview:viewB]
现在在viewC上尝试 CGContextRef
UIImage *outputImage = [self convertViewToImage:viewC :1];
convertViewToImage方法:
+(UIImage*)convertViewToImage:(UIView*)view:(float)ratio{
UIGraphicsBeginImageContext(view.bounds.size);
//UIGraphicsBeginImageContext(view.frame.size);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
CGImageRef imageRef = CGImageCreateWithImageInRect([viewImage CGImage], CGRectMake(0, 0, view.bounds.size.width*ratio, view.bounds.size.height*ratio));
UIImage *targetImage = [UIImage imageWithCGImage:imageRef];
CGImageRelease(imageRef);
return targetImage;
}
我相信会这样做。