2009-10-13 6 views
2

Vous tentez de faire une capture d'écran lorsque l'utilisateur est en mode Appareil photo et que l'utilisateur prend une photo. J'ai une application avec plusieurs onglets. Dans l'un d'eux, l'utilisateur lance la caméra. J'utilise CameraOverViewController pour créer un bouton personnalisé pour prendre une photo [picker takePicture]. Lorsque cette photo est prise, j'ai également une capture d'écran de l'image en utilisant des méthodes standard. Tout cela fonctionne très bien dans une application de test sans onglets, dès que j'introduis les onglets, il retourne juste un carré noir. Je me rends compte qu'il est susceptible de faire avec la bonne vue, je ne peux pas comprendre quelle vue obtenir.iPhone Capture d'écran de UIImagePickerController Affichage - Toujours noir si l'application TAB

// the view loaded in the tab view 
@interface CameraTestViewController : UIViewController |UIImagePickerControllerDelegate, UINavigationControllerDelegate| 

UIImagePickerController *picker 

.m 
- (void) setUpCamera : (id) sender { 
picker = [[UIImagePickerController alloc] init]; 
picker.delegate = self; 
picker.sourceType = UIImagePickerControllerSourceTypeCamera; 
picker.allowsEditing = NO; 
picker.showsCameraControls = NO; 
picker.wantsFullScreenLayout = YES; 
picker.cameraViewTransform = CGAffineTransformScale(picker.cameraViewTransform, CAMERA_SCALAR, CAMERA_SCALAR); 

CameraOverViewController *createOverlay = [[CameraOverViewController alloc] initWithNibName:@"CameraOverViewController" bundle:nil];  
[createOverlay mainView:self];    
[picker setCameraOverlayView:createOverlay.view]; 

[self presentModalViewController:picker animated:YES];  
[picker release]; 

} 

- (void) snapThePicture { 
    [picker takePicture]; 
} 

// TAKE SCREEN SHOT AS WELL. WORKS WITH NO TABS 
- (void)imagePickerController:(UIImagePickerController *)pickerHere didFinishPickingMediaWithInfo:(NSDictionary *)info { 
    // tried many, many things. self.view.layer, etc 
    CGRect screenRect = CGRectMake(0, 0, 320, 480); 
    UIGraphicsBeginImageContext(screenRect.size); 
    [self.picker.view.layer renderInContext:UIGraphicsGetCurrentContext()]; 

     // UIIMAGE ALWAYS A BLACK RECTANGLE OF RIGHT SIZE. WOULD WORK IF NOT IN TAB VIEW 

     UIImage *screenImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
} 

Toute aide est appréciée.

merci.

+0

Devrait mentionner si j'utilise 'self.view.layer' il renvoie une image de l'interface, pas de l'image. Je ne rejette pas la vue avant d'avoir essayé la capture d'écran. Et cela fonctionne quand ce n'est pas dans un onglet. –

+0

Avez-vous déjà la solution? –

Répondre

1

theTabView.view.layer?

+1

Non. Cela prend juste une photo de l'interface, pas de ce que la caméra regarde. Si nous pouvons résoudre ce problème, nous obtiendrons une version ultra-rapide de l'image de la caméra, une zone de problèmes de performance avec codage pour l'iPhone. –

-1

peut-être cela peut vous aider comme cela a fonctionné pour moi:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {  

UIImage *img = [info objectForKey:UIImagePickerControllerOriginalImage ]; 
NSData *mydata= UIImageJPEGRepresentation(img , 1); 
UIImageWriteToSavedPhotosAlbum(img, self, nil, nil); 

}

avec ce principe, vous aurez votre instantané pris et enregistré à votre PhotoAlbum. ciao!

+0

Comment est-ce une solution? C'est l'image entière ... L'OP demande clairement une solution qui lui permet de recadrer l'image (CGRect screenRect = CGRectMake (0, 0, 320, 480); UIGraphicsBeginImageContext (screenRect.size);) – Kevin

Questions connexes