在我的应用程序中,我需要能够共享UIView的屏幕截图。这是我用来截取屏幕截图的代码:
CGRect viewFrame = [view bounds];
UIGraphicsBeginImageContextWithOptions(viewFrame.size, YES, 0.0);
CGContextRef context = UIGraphicsGetCurrentContext();
[view.layer renderInContext:context];
UIImage *viewScreenshot = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
我对所产生图像的质量不满意。这是一个例子。我不喜欢文本和图像周围的噪音/模糊。
UIView screenshot example http://oi57.tinypic.com/6ekf7s.jpg
有谁能告诉我如何提高质量,受到青睐?或者这是怎么回事?
答案 0 :(得分:0)
您提供的代码片段是正确的。它将产生没有人工制品的完美图像。但是,在将其保存到文件时,必须使用无损格式。您在图像中看到的模糊是由有损压缩引起的。
答案 1 :(得分:0)
我同意其他答案。快速说明一下。在iOS7 +中,您可以使用以下代码而不是您的代码。它要快得多:
UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, 0.0f);
[view drawViewHierarchyInRect:view.bounds afterScreenUpdates:NO];
UIImage * snapshotImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return snapshotImage;