Objective-C: Capture screenshot of all views within custom frame

| | August 7, 2015

I have a game where users can create custom levels and upload them to my server for other users to play and I want to get a screenshot of the “action area” before the user tests his/her level to upload to my server as sort of a “preview image”.

I know how to get a screenshot of the entire view, but I want to define it to a custom frame. Consider the following image:

Action Area

I want to just take a screenshot of the area in red, the “action area.” Can I achieve this?

2 Responses to “Objective-C: Capture screenshot of all views within custom frame”

  1. - (UIImage *) getScreenShot {
        UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow];
        CGRect rect = [keyWindow bounds];
        UIGraphicsBeginImageContext(rect.size);
        CGContextRef context = UIGraphicsGetCurrentContext();
        [keyWindow.layer renderInContext:context];   
        UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        return img;
    }
    
  2. Developer Roadies on November 30, -0001 @ 12:00 AM

    Just you need to make a rect of the area you want to be captured and pass the rect in the method.

        -(UIImage *)captureScreenInRect:(CGRect)captureFrame {
           CALayer *layer;
           layer = self.view.layer;
           UIGraphicsBeginImageContext(self.view.bounds.size); 
           CGContextClipToRect (UIGraphicsGetCurrentContext(),captureFrame);
           [layer renderInContext:UIGraphicsGetCurrentContext()];
           UIImage *screenImage = UIGraphicsGetImageFromCurrentImageContext();
           UIGraphicsEndImageContext();
           return screenImage;
        }
    

Leave a Reply