如何保存UIView内容(屏幕截图)而不降低其质量

时间:2014-07-09 09:02:07

标签: ios objective-c uiview

我有一个UIView我希望将其内容保存到图片中,我使用UIGraphicsBeginImageContextUIGraphicsGetImageFromCurrentImageContext()成功完成了该操作,但问题是图像质量问题降低了。有没有办法在不降低图像质量的情况下将截图/保存UIView内容保存到图像中?

这是我的代码片段:

UIGraphicsBeginImageContext(self.myView.frame.size);
[self.myview.layer renderInContext:UIGraphicsGetCurrentContext()];

UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

2 个答案:

答案 0 :(得分:4)

尝试以下代码:

UIGraphicsBeginImageContextWithOptions(YourView.bounds.size, NO, 0);

[YourView drawViewHierarchyInRect:YourView.bounds afterScreenUpdates:YES];

UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

这段代码工作Awsome ...... !!!

答案 1 :(得分:3)

Mital Solanki’s answer是一个很好的解决方案,但问题的根源在于您的视图位于视网膜屏幕上(因此比例因子为2)并且您正在创建比例因子为1的图形上下文。documentation for UIGraphicsBeginImageContext州:

  

此函数相当于调用UIGraphicsBeginImageContextWithOptions函数,其中opaque参数设置为NO,比例因子为1.0

而是使用UIGraphicsBeginImageContextWithOptions缩放0,相当于传递[[UIScreen mainScreen] scale]的缩放。