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.