美文网首页
iOS 截图

iOS 截图

作者: TigerManBoy | 来源:发表于2018-09-12 11:17 被阅读0次

1、屏幕截图

//截取当前屏幕大小的图片
- (UIImage *)snapshot
{
    UIGraphicsBeginImageContextWithOptions(self.bounds.size, YES, [[UIScreen mainScreen] scale]);;
    
    if ([self respondsToSelector:@selector(drawViewHierarchyInRect:afterScreenUpdates:)]) {
        [self drawViewHierarchyInRect:self.bounds afterScreenUpdates:NO];
    } else {
        CGContextRef context = UIGraphicsGetCurrentContext();
        [self.layer renderInContext:context];
    }
    
    UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    
    return viewImage;
}

2、scrollView、tableView的截图

- (UIImage *)getImageWithTableView {
    
    UIImage* newImage = nil;
    
    UITableView *scrollView = (UITableView *)self;
    
    CGFloat scale =  [UIScreen mainScreen].scale;
    
    UIGraphicsBeginImageContextWithOptions(scrollView.contentSize, scrollView.opaque, scale);
    
    {
        CGPoint savedContentOffset = scrollView.contentOffset;
        CGRect savedFrame = scrollView.frame;
        scrollView.contentOffset = CGPointZero;
        scrollView.frame = CGRectMake(0, 0, scrollView.contentSize.width, scrollView.contentSize.height);
        [scrollView.layer renderInContext: UIGraphicsGetCurrentContext()];
        newImage = UIGraphicsGetImageFromCurrentImageContext();
        scrollView.contentOffset = savedContentOffset;
        scrollView.frame = savedFrame;
    }
    UIGraphicsEndImageContext();
    return newImage; 
}
类似于上面的截图,会有一定的问题,如果你用self.tableView.rowHeight = UITableViewAutomaticDimension;来预估算tableView的cell高度的话,tableView的截图就会出现误差,会多一块黑色的,因为预估高度会比真实高度高一点儿,画布的高度是预估的高度,但是渲染出来的图片确是真实的高度,而我们需要的是渲染出来的图片,则需要进行裁剪,则可以使用下面的方法

3、scrollView、tableView的截图裁剪为需要的图片

- (UIImage *)getImageWithTableView {
    
    UIImage* newImage = nil;
    
    UITableView *scrollView = (UITableView *)self;
    
    CGFloat scale =  [UIScreen mainScreen].scale;
    
    UIGraphicsBeginImageContextWithOptions(scrollView.contentSize, scrollView.opaque, scale);
    
    {
        CGPoint savedContentOffset = scrollView.contentOffset;
        
        CGRect savedFrame = scrollView.frame;
        
        scrollView.contentOffset = CGPointZero;
        
        scrollView.frame = CGRectMake(0, 0, scrollView.contentSize.width, scrollView.contentSize.height);

        [scrollView.layer renderInContext: UIGraphicsGetCurrentContext()];

        UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
        
        scrollView.contentOffset = savedContentOffset;
        
        scrollView.frame = savedFrame;
        
        //将UIImage转换成CGImageRef
        CGImageRef sourceImageRef = [viewImage CGImage];
        
        //按照给定的矩形区域进行剪裁
        CGImageRef newImageRef = CGImageCreateWithImageInRect(sourceImageRef, CGRectMake(0, 0, scrollView.contentSize.width * scale, scrollView.contentSize.height * scale));
        
        //将CGImageRef转换成UIImage
        UIImage* scaledImage = [UIImage imageWithCGImage:newImageRef];
        
        //等比缩放
        CGSize size = CGSizeMake(scaledImage.size.width / scale, scaledImage.size.height / scale);
        UIGraphicsBeginImageContext(size);  //size 为CGSize类型,即你所需要的图片尺寸
        [scaledImage drawInRect:CGRectMake(0, 0, size.width, size.height)];
        newImage = UIGraphicsGetImageFromCurrentImageContext();
    }

    UIGraphicsEndImageContext();
    
    return newImage;
    
}

相关文章

  • iOS 截图的那些事儿

    iOS 截图的那些事儿 iOS 截图的那些事儿

  • iTunes Connect对App截图的要求 iOS 上架 A

    iTunes Connect对App截图的要求 iOS发布时的截图尺寸 IOS 模拟器截图设置 xcode6 模拟...

  • iOS-WKWebView UIScrollView 全屏截图,

    iOS-WKWebView UIScrollView 全屏截图,网页全屏截图UiTableView UIScrol...

  • iOS应用内截图代码

    iOS应用内截图代码

  • iOS 截图

    1、屏幕截图 2、scrollView、tableView的截图 类似于上面的截图,会有一定的问题,如果你用sel...

  • iOS 截图

    最近公司项目完了!闲的每天都只有写下简书!把以前总结的东西都归纳出来!??? 包括:截屏、截取某个视图 以及 截取...

  • iOS 截图

    本人最近要对图片进行截图,在截图过程中遇到了一系列的问题,并把我的学习成果分享出来。 上面是一张我要进行截图的原图...

  • ios 截图

    今日学习截图的另一种方法,质量更好,更清晰 //方法1 UIGraphicsBeginImageContext(...

  • iOS 截图

  • iOS 截图

网友评论

      本文标题:iOS 截图

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