美文网首页
View生成Image

View生成Image

作者: Leon1024 | 来源:发表于2019-07-07 18:40 被阅读0次

.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;
}

相关文章

网友评论

      本文标题:View生成Image

      本文链接:https://www.haomeiwen.com/subject/uddihctx.html