Cómo get UIImage de un área específica en la pantalla actual ios

El siguiente código obtiene UIImage de la pantalla actual:

UIGraphicsBeginImageContext(self.view.frame.size); CGContextRef ctx = UIGraphicsGetCurrentContext(); [self.view.layer renderInContext:ctx]; UIImage *backgroundImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); 

Si tengo un CGRect rect y quiero get solo el UIImage de la pantalla actual en ese rect, ¿cómo puedo hacerlo?

Para la image Get Rect (Recortar):

 UIImage *croppedImg = nil; CGRect cropRect = CGRectMake(AS You Need); croppedImg = [self croppIngimageByImageName:self.imageView.image toRect:cropRect]; 

Utilice el siguiente método que devuelva UIImage ( como desee el tamaño de la image )

 - (UIImage *)croppIngimageByImageName:(UIImage *)imageToCrop toRect:(CGRect)rect { //CGRect CropRect = CGRectMake(rect.origin.x, rect.origin.y, rect.size.width, rect.size.height+15); CGImageRef imageRef = CGImageCreateWithImageInRect([imageToCrop CGImage], rect); UIImage *cropped = [UIImage imageWithCGImage:imageRef]; CGImageRelease(imageRef); return cropped; } 

Pase la image que desea recortar y cambie image.size.width e image.size.height según su requerimiento

 -(UIImage *)cropSquareImage:(UIImage *)image { CGRect cropRect; if (image.size.width < image.size.height) { float x = 0; float y = (image.size.height/2) - (image.size.width/2); cropRect = CGRectMake(x, y, image.size.width, image.size.width); } else { float x = (image.size.width/2) - (image.size.height/2); float y = 0; cropRect = CGRectMake(x, y, image.size.height, image.size.height); } CGImageRef imageRef = CGImageCreateWithImageInRect([image CGImage], cropRect); return [UIImage imageWithCGImage:imageRef]; }