2010-08-11 3 views

Répondre

4

Cette utilisation:

UIGraphicsBeginImageContext(rect.size); 
[webView.layer renderInContext:UIGraphicsGetCurrentContext()]; 
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
+0

Lorsque vous prenez une capture d'écran d'un webview, il ne prend que des écrans chaud de la zone visible. La zone masquée n'est pas prise en compte. –

7

La réponse acceptée est correcte, mais la capture d'écran n'est pas dans la résolution de la rétine. L'utilisation de UIGraphicsBeginImageContextWithOptions et de son paramètre d'échelle 0.0f le fait capturer en résolution native.

UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow]; 
CGRect rect = [keyWindow bounds]; 
UIGraphicsBeginImageContextWithOptions(rect.size,YES,0.0f); 
CGContextRef context = UIGraphicsGetCurrentContext(); 
[keyWindow.layer renderInContext:context]; 
UIImage *capturedScreen = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
3

utiliser ce code pour prendre une capture d'écran et l'enregistrer dans la bibliothèque

UIGraphicsBeginImageContext(self.view.bounds.size); 
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()]; 
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
UIImageWriteToSavedPhotosAlbum(viewImage, self, nil, nil); 

vous pouvez changer la capture d'écran en prenant part en changeant la

UIGraphicsBeginImageContext(self.view.bounds.size); 

à votre valeur respective try il vous aidera