¿Hay alguna manera de save una UIView a png sin capturar toda la pantalla

Lo que estoy tratando de hacer es save una UIView que recibe inputs de usuario como dibujos, y save el dibujo solamente, sin background, de esa manera como una configuration en la aplicación, el usuario puede cambiar las imágenes de background en las que están dibujando.

He encontrado un montón de código para hacer capturas de pantalla, pero nada sobre save solo una UIView.

¿Alguna sugerencia?

Esta es la categoría para UIView :

 @interface UIView(Image) - (UIImage*)image; @end 

 #import "UIView+Image.h" #import <QuartzCore/QuartzCore.h> @implementation UIView(Image) - (UIImage *)image { CGSize imageSize = self.bounds.size; UIGraphicsBeginImageContext(imageSize); CGContextRef imageContext = UIGraphicsGetCurrentContext(); CGContextTranslateCTM(imageContext, 0.0, imageSize.height); CGContextScaleCTM(imageContext, 1.0, -1.0); //for (CALayer* layer in self.layer.sublayers) { // [layer renderInContext: imageContext]; //} [self.layer renderInContext: imageContext]; UIImage* viewImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return viewImage; } @end 

Puedes echar un vistazo a esta publicación , es justo lo que estás buscando. De todos modos, este es el código que necesitas.

 UIView *view = ...; CGSize size = [view bounds].size; UIGraphicsBeginImageContext(size); [[view layer] renderInContext:UIGraphicsGetCurrentContext()]; UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); 

Esto debería capturar solo la vista:

 UIGraphicsBeginImageContext(someView.bounds.size); [someView.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); 
 CGSize imgsize = self.view.bounds; UIGraphicsBeginImageContext(imgsize); [self.view.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage *NewImg = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); NSData *imageData = UIImageJPEGRepresentation(NewImg,1); NSString *fullPath = @""; //Path of Document directory where u wish to save the image. BOOL success = [mediaData writeToFile:fullPath atomically:YES];