Convertir UITextView en una image

Tengo un UITextView y un UIImageView que quiero convertir en una única image para compartir.

SaveImageView, es el ImageView, donde quiero save la image de la vista de text.

TextView puede moverlo a través de la pantalla, por lo que decido save su position final y dársela a SaveImageView.

Primero convierte el UItextView en una image y guarda su position.

Luego, quiero unir dos imágenes, en una sola image.

self.SaveTextView.frame = self.textView.frame; UIGraphicsBeginImageContext (self.textView.bounds.size); [self.textView.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); self.SaveTextView.image=resultingImage; 

// unir dos uiimageview

 UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, 0.0); [self.BaseImageView.image drawInRect:CGRectMake(0, 0, self.BaseImageView.frame.size.width, self.BaseImageView.frame.size.height)]; [self.SaveTextView.image drawInRect:CGRectMake(self.SaveTextView.frame.origin.x, self.SaveTextView.frame.origin.y, self.SaveTextView.frame.size.width, self.SaveTextView.frame.size.height)]; _SaveImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); 

El problema es que el lugar donde escribo en la vista de text no está en la misma position de la image guardada, la image con el text se mueve ligeramente, cuando debería ser el lugar exacto donde escribí, no encuentro dónde está el error .

Alguna ayuda ??

Intenta implementar este método y invócalo en Superview:

 @implementation UIView (ScreenShot) - (UIImage *)screenShot { UIGraphicsBeginImageContextWithOptions(self.bounds.size, self.opaque, 0.0); [self.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return image; } @end 

Prueba esto…

 //Make Label UILabel *_labelTimeOutName = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 428, 32)]; _labelTimeOutName.text = @"Your label text here"; _labelTimeOutName.minimumScaleFactor = 0.5; _labelTimeOutName.numberOfLines = 1; _labelTimeOutName.textColor = [UIColor whiteColor]; _labelTimeOutName.backgroundColor = [UIColor clearColor]; _labelTimeOutName.font = [UIFont fontWithName:@"TrebuchetMS-Bold" size:24]; _labelTimeOutName.textAlignment = NSTextAlignmentCenter; //add label inside a temp View UIView *tempView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 428, 32)]; tempView.backgroundColor = [UIColor clearColor]; [tempView addSubview:_labelTimeOutName]; //render image //CGContextRef context = UIGraphicsGetCurrentContext(); UIGraphicsBeginImageContextWithOptions(tempView.bounds.size, tempView.opaque, 0.0); // The view to be rendenetworking [[tempView layer] renderInContext:UIGraphicsGetCurrentContext() ]; //context]; // Get the rendenetworking image ////////////////////////////////////////////////////////////////////// UIImage *FinalTextIamge = UIGraphicsGetImageFromCurrentImageContext(); ////////////////////////////////////////////////////////////////////// UIGraphicsEndImageContext(); 

¡Disfrutar!