2010-07-24 3 views
0

J'essaie de prendre une image en plein écran de l'image de la caméra sans avoir l'overop de superposition.iPhone SDK - Comment masquer cameraOverlayView avant d'utiliser UIGetScreenImage?

Dans mon contrôleur de superposition j'ai essayé de cacher la superposition avec ces lignes de code:

[self.view setHidden:YES]; 
[self.view setNeedsDisplay]; 
CGImageRef screen = UIGetScreenImage(); 
UIImage* image = [UIImage imageWithCGImage:screen]; 
CGImageRelease(screen); 
self.view.hidden = NO; 

UIGetScreenImage montre encore l'interface utilisateur de superposition.

Y at-il un moyen de rendre cela possible?

Répondre

0

Vous devez définir la propriété cameraOverlayView de l'instance UIImagePickerController, puis utiliser la méthode takePicture pour obtenir l'image actuelle. Dans votre délégué, vous devez mettre en œuvre:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 
    [self closeImagePickerController]; 

    // Get the edited or original image 
    UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage]; 
    if (image == nil) 
     image = [info objectForKey:UIImagePickerControllerOriginalImage]; 

    // Do something with the image... 
} 

Apple a fait UIGetScreenImage() une API privée à nouveau, de sorte que vous n'êtes pas autorisé à utiliser que plus.

+0

Cela ne prend pas une capture d'écran comme le fait 'UIGetScreenImage'. Bien que cela fonctionne, l'inconvénient est qu'il est vraiment lent par rapport à la façon de capture d'écran (au moins dans iOS 3, il était). – Rengers

+0

Je lis partout qu'Apple permet d'utiliser UIGetScreenImage jusqu'à ce qu'ils introduisent une méthode api publique? – dan