目录

iOS 截取整个 scrollview 图片

目录

最近做的项目需要“分享图片”的功能,截屏不单单指当前屏幕可视区域,而是指整个 scrollView 区域,因为截屏的范围可自定义,所以只需要将 scrollview 的范围设置就可以,以下是相关代码:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
///获取截屏图片
- (UIImage *)captureScrollView:(UIScrollView *)scrollView
{
    UIImage* image = nil;
    UIGraphicsBeginImageContextWithOptions(scrollView.contentSize, NO, 0.0); // 原图清晰度
    {
        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()];
        image = UIGraphicsGetImageFromCurrentImageContext();
        
        scrollView.contentOffset = savedContentOffset;
        scrollView.frame = savedFrame;
    }
    UIGraphicsEndImageContext();
    
    if (image != nil) {
        return image;
    }
    return nil;
}

以上就是相关截整个 scrollview 屏幕方法。

注:可以通过修改 UIGraphicsBeginImageContextWithOptions 的参数值改变截图的大小。

如果想要截图清晰,可以用

1
UIKIT_EXTERN void UIGraphicsBeginImageContextWithOptions(CGSize size, BOOL opaque, CGFloat scale) NS_AVAILABLE_IOS(4_0);