最近在弄一个项目遇到了需要将UIView转化为UIImage。记录下。
最开始用的是下面的方法:
UIGraphicsBeginImageContext(view.bounds.size);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
但是发现有个问题,就是UIView中的文字和图片什么的都会模糊,变虚... 后来看了一个大神的解决方法,顿时解决。
如果模糊的话是屏幕密度不对。根据当前UIScreen的scale来设置就OK了。
CGSize s = view.bounds.size;
// 下面方法,第一个参数表示区域大小。第二个参数表示是否是非透明的。如果需要显示半透明效果,需要传NO,否则传YES。第三个参数就是屏幕密度了
UIGraphicsBeginImageContextWithOptions(s, NO, [UIScreen mainScreen].scale);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage*image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;