iOS 屏幕截图

作者: 72行代码 | 来源:发表于2019-01-29 15:47 被阅读12次
    // 1. 按屏幕截图,即全屏截图
    - (void)doScreenShot{
        // 开启图片上下文
        UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, 0);
        // 获取当前上下文
        CGContextRef ctx = UIGraphicsGetCurrentContext();
        // 截图:实际是把layer上面的东西绘制到上下文中
        [self.view.layer renderInContext:ctx];
        //iOS7+ 推荐使用的方法,代替上述方法
        // [self.view drawViewHierarchyInRect:self.view.frame afterScreenUpdates:YES];
        // 获取截图
        UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
        // 关闭图片上下文
        UIGraphicsEndImageContext();
        // 保存相册
        UIImageWriteToSavedPhotosAlbum(image, NULL, NULL, NULL);
    }
    
    // 2. 按内容截屏,即截全图
    - (void)screenShots{
        UICollectionView *shadowView = self.collectionView;
        // 开启图片上下文
        UIGraphicsBeginImageContextWithOptions(shadowView.contentSize, NO, 0.f);
        // 保存现在视图的位置偏移信息
        CGPoint saveContentOffset = shadowView.contentOffset;
        // 保存现在视图的frame信息
        CGRect saveFrame = shadowView.frame;
        // 把要截图的视图偏移量设置为0
        shadowView.contentOffset = CGPointZero;
        // 设置要截图的视图的frame为内容尺寸大小
        shadowView.frame = CGRectMake(0, 0, shadowView.contentSize.width, shadowView.contentSize.height);
        // 获取当前上下文
        CGContextRef ctx = UIGraphicsGetCurrentContext();
        // 截图:实际是把layer上面的东西绘制到上下文中
        [shadowView.layer renderInContext:ctx];
        //iOS7+ 推荐使用的方法,代替上述方法
        // [shadowView drawViewHierarchyInRect:shadowView.frame afterScreenUpdates:YES];
        // 获取截图
        UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
        // 关闭图片上下文
        UIGraphicsEndImageContext();
        // 将视图的偏移量设置回原来的状态
        shadowView.contentOffset = saveContentOffset;
        // 将视图的frame信息设置回原来的状态
        shadowView.frame = saveFrame;
        // 保存相册
        UIImageWriteToSavedPhotosAlbum(image, NULL, NULL, NULL);
    }
    

    附:我的博客地址

    相关文章

      网友评论

        本文标题:iOS 屏幕截图

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