美文网首页
iOS 获取view的截图

iOS 获取view的截图

作者: 赑屃王者 | 来源:发表于2020-06-28 14:37 被阅读0次

    一、获取普通视图的截图

    #pragma mark 获取截屏图片
    - (UIImage *)captureScreenForView:(UIView *)currentView {
        // 开启一个绘图的上下文
        UIGraphicsBeginImageContextWithOptions(CGSizeMake(currentView.size.width, currentView.size.height), NO, 0.0);
        // 作用于CALayer层的方法。将view的layer渲染到当前的绘制的上下文中。
        [shotView drawViewHierarchyInRect:CGRectMake(0, 0, currentView.frame.size.width, currentView.frame.size.height) afterScreenUpdates:YES];
        // 获取图片
        UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
        // 结束绘图上下文
        UIGraphicsEndImageContext();
        
        return  viewImage;
    }
    

    二、获取滚动视图的内容截图

    + (UIImage *)screenShotWithView:(UIScrollView *)shotView shotSize:(CGSize)shotSize {
        // 开启图片上下文
        UIGraphicsBeginImageContextWithOptions(shotSize, NO, 0.f);
        
        // 保存现在视图的位置偏移信息
        CGPoint saveContentOffset = shotView.contentOffset;
        
        // 保存现在视图的frame信息
        CGRect saveFrame = shotView.frame;
        // 把要截图的视图偏移量设置为0
        shotView.contentOffset = CGPointZero;
        // 设置要截图的视图的frame为内容尺寸大小
        shotView.frame = CGRectMake(0, 0, shotSize.width, shotSize.height);
        
        // 截图:实际是把layer上面的东西绘制到上下文中
        [shotView drawViewHierarchyInRect:CGRectMake(0, 0, shotSize.width, shotSize.height) afterScreenUpdates:YES];
        // 获取截图
        UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
        
        // 关闭图片上下文
        UIGraphicsEndImageContext();
        // 将视图的偏移量设置回原来的状态
        shotView.contentOffset = saveContentOffset;
        // 将视图的frame信息设置回原来的状态
        shotView.frame = saveFrame;
        
        return image;
    }
    

    相关文章

      网友评论

          本文标题:iOS 获取view的截图

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