7
[[[globalSingleton paintingView] drawingView] setOpaque:NO];
[[[[globalSingleton paintingView] drawingView] layer] setOpaque:NO];    
[[[globalSingleton paintingView] drawingView] setBackgroundColor:[UIColor clearColor]];
[[[[globalSingleton paintingView] drawingView] layer] setBackgroundColor:[UIColor clearColor].CGColor];

[[[[globalSingleton paintingView] drawingView] layer] renderInContext:ctx];

UIImage *image1 = UIGraphicsGetImageFromCurrentImageContext();

上面的代码是我用来将“drawingView”保存到 png 文件的代码。我找到了几个问题和答案,所以我应用了它们。我将“drawingView”和drawingView.layer 的不透明设置为NO,并将“drawingView”的背景颜色设置为[UIColor clearColor]。我想我应用了stackoverflow的所有答案。但是,没有任何改变。png fil的背景仍然是黑色的。我需要透明背景,而不是黑色!!

我试过 UIImage *image1 是否有问题。我使用 image1 在屏幕上显示,然后我可以从该 image1 中找到黑色背景。所以我猜想在创建 image1 时有什么问题。

这就是我发现的全部。是否有任何可能的解决方案可以使用透明背景图像保存我的 png 图像?提前致谢!!

4

2 回答 2

8

天啊!我做到了!!我添加了 [[UIColor clearColor] set]; . 就这样。

UIGraphicsBeginImageContextWithOptions(screenRect.size, NO, [[UIScreen mainScreen] scale]);

CGContextRef ctx = UIGraphicsGetCurrentContext();
[[UIColor clearColor] set];
CGContextFillRect(ctx, screenRect);

[[[globalSingleton paintingView] drawingView] setOpaque:NO];
[[[[globalSingleton paintingView] drawingView] layer] setOpaque:NO];    
[[[globalSingleton paintingView] drawingView] setBackgroundColor:[UIColor clearColor]];
[[[[globalSingleton paintingView] drawingView] layer] setBackgroundColor:[UIColor clearColor].CGColor];

[[[[globalSingleton paintingView] drawingView] layer] renderInContext:ctx]; 

UIImage *image1 = UIGraphicsGetImageFromCurrentImageContext();
于 2012-07-08T09:19:07.390 回答
4

斯威夫特 4.2 版本:

extension UIView {

func saveAsImage()-> UIImage? {
    UIGraphicsBeginImageContext(self.bounds.size)
    guard let context = UIGraphicsGetCurrentContext() else { return nil }

    UIColor.clear.set()
    context.fill(self.bounds)

    self.isOpaque = false
    self.layer.isOpaque = false
    self.backgroundColor = UIColor.clear
    self.layer.backgroundColor = UIColor.clear.cgColor

    self.layer.render(in: context)
    let image = UIGraphicsGetImageFromCurrentImageContext()

    return image
}
}
于 2018-12-29T13:03:47.747 回答