.h文件
/**
将view包含subviews所呈现的视图转换成image,非view包含的内容不被转换,默认倍率为屏幕倍率
@param view 需要转换的视图
@return 生成的image
*/
- (UIImage *)imageByConvertView:(UIView *)view;
/**
将view包含subviews所呈现的视图转换成image,非view包含的内容不被转换
@param view 需要转换的视图
@param size 根据view的原点,设置要生成image的区域,如果超出将由 isOpaque参数控制超出部分是否透明
@param isOpaque 设置生成的image背景是否不透明, YES不透明, NO透明
@param scale 生成的视图倍率,按size的1比1像素为基准,如size(300,300),scale为2, 则生成image大小为600像素x600像素
@return 生成的image
*/
- (UIImage *)imageByConvertView:(UIView *)view relativeOriginSize:(CGSize)size opaque:(BOOL)isOpaque scale:(CGFloat)scale;
.m文件
- (UIImage *)imageByConvertView:(UIView *)view {
return [self imageByConvertView:view relativeOriginSize:view.frame.size opaque:NO scale:[UIScreen mainScreen].scale];
}
- (UIImage *)imageByConvertView:(UIView *)view relativeOriginSize:(CGSize)size opaque:(BOOL)isOpaque scale:(CGFloat)scale {
if (!view) {
return nil;
}
[view layoutIfNeeded]; // 如果有自动布局的,先刷新下布局
UIImage *imageRet = [[UIImage alloc]init];
UIGraphicsBeginImageContextWithOptions(size, isOpaque, scale);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
imageRet = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return imageRet;
}
网友评论