IOSスクリーンショットUIscrollview

1859 ワード

//スクリーンショットUIView:スクリーンショット
-(UIImage*)captureView:(UIView *)theView{

    CGRect rect = theView.frame;

    if ([theView isKindOfClass:[UIScrollView class]]) {

        rect.size = ((UIScrollView *)theView).contentSize;

    }

	

	UIGraphicsBeginImageContext(rect.size);

	CGContextRef context = UIGraphicsGetCurrentContext();

	[theView.layer renderInContext:context];

	UIImage *img = UIGraphicsGetImageFromCurrentImageContext();

	UIGraphicsEndImageContext();

	return img;

}




UIView:一部のビューを切り取る
 
-(UIImage*)imageFromView:(UIView *)theView atFrame:(CGRect)rect
{
    UIGraphicsBeginImageContext(theView.frame.size);
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSaveGState(context);
    UIRectClip(rect);
    [theView.layer renderInContext:context];
    UIImage *theImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return  theImage;
}
UIScrollView:
- (UIImage *)captureScrollView:(UIScrollView *)scrollView{

    UIImage* image = nil;

    UIGraphicsBeginImageContext(scrollView.contentSize);

    {

        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;

}