2010-06-19 12 views

Respuesta

7

De esta manera:

UIGraphicsBeginImageContext(myView.bounds.size); 
[myView.layer renderInContext:UIGraphicsGetCurrentContext()]; 
UIImage *myImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

Usted tendrá que incluir el marco CoreGraphics, e importar el CALayer.h:

#import <QuartzCore/CALayer.h> 
+0

¡Exactamente lo que estaba buscando! –

+0

Sé que esto es antiguo, pero para pantallas Retina use 'UIGraphicsBeginImageContextWithOptions (myView.bounds.size, myView.opaque, 0.0);' para evitar una imagen de aspecto borroso. – Jakar

2

Aquí, probar este

CGImageRef screen = UIGetScreenImage(); 
UIImage *screenImage = [UIImage imageWithCGImage:screen]; 

que tomará una captura de pantalla de la pantalla, por lo que, en teoría, la captura de todos los elementos de la vista y le da una UIImage para trabajar fuera de. ¡Espero que ayude!

+0

Oye, eso es bastante genial, pero el problema es que captura toda la vista principal y tengo una barra de pestañas, por ejemplo, en mi versión principal. w que no quiero en el UIImage final ... ¿Hay alguna forma de evitar esto? Gracias de antemano, -David – bobbypage

+0

puede intentar recortar el UIImage a las coordenadas xey exactas que necesitará. Si esta no es una buena opción para usted, entonces este método probablemente no funcionará. –

+0

¿Podría quizás hacer que los elementos no sean visibles en la etapa en que se captura la imagen? – KTOV

0

método Add Siguiendo a la categoría UIView y utilizar

- (UIImage*) capture { 
    UIGraphicsBeginImageContext(self.bounds.size); 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    [self.layer renderInContext:context]; 
    UIImage *img = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return img; 
} 
Cuestiones relacionadas