我有一个UIView
我希望将其内容保存到图片中,我使用UIGraphicsBeginImageContext
和UIGraphicsGetImageFromCurrentImageContext()
成功完成了该操作,但问题是图像质量问题降低了。有没有办法在不降低图像质量的情况下将截图/保存UIView
内容保存到图像中?
这是我的代码片段:
UIGraphicsBeginImageContext(self.myView.frame.size);
[self.myview.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
答案 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]
的缩放。