Hi,
I'm trying to clip a region of an UIView
, into a UIImage
for later reuse.
I've worked out this code from some snippets:
CGRect _frameIWant = CGRectMake(100, 100, 100, 100);
UIGraphicsBeginImageContext(view.frame.size);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
//STEP A: GET AN IMAGE FOR THE FULL FRAME
UIImage *_fullFrame = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
//STEP B: CLIP THE IMAGE
CGImageRef _regionImage = CGImageCreateWithImageInRect([_fullFrame CGImage], _frameIWant);
UIImage *_finalImage = [UIImage imageWithCGImage:_regionImage];
CGImageRelease(_regionImage);
'view' is the UIView which I'm clipping and '_finalImage' is the UIImage I want.
The code works without problem, however is kind of slow. I believe that some performance could be gained by taking just the portion of the screen directly in Step A.
I'm looking for something like 'renderInContext: withRect:' or 'UIGraphicsGetImageFromCurrentImageContextWithRect()' hehe.
Still haven't found anything yet :(, please help me if you know of some alternative.