2010-08-12 6 views
1

Je suis actuellement en train de développer une application qui utilise le UIImagePickerController pour prendre des photos avec le build à huis clos. Ce que je ne veux pas faire, c'est de fournir à l'utilisateur un interrupteur sur la barre inférieure du UIImagePickerController pour pouvoir basculer entre la caméra avant et la caméra arrière (si disponible, bien sûr). Je sais comment il est possible de déterminer s'il y a une caméra frontale, mais comment puis-je montrer un tel interrupteur sur la barre du bas?Problème avec la caméra

Merci pour votre aide!

Répondre

0

Vous pouvez définir showsCameraControls sur UIImagePickerController ou YES ou fournir vos propres contrôles avec cameraOverlayView.

Pour basculer entre les caméras avant et arrière, utilisez la propriété cameraDevice de UIImagePickerController.

+0

Il signifie comment il peut effectivement ** ** show la caméra frontale. – elslooo

+0

Citation de la question: "... mais comment puis-je montrer un tel interrupteur ..." – tobiasbayer

+0

Citation de la question: "... capable de basculer entre l'avant et l'arrière de la caméra", donc il veut dire comment il peut montre un commutateur ** qui montre la caméra frontale quand elle est allumée **. – elslooo

1

.h fichier @property (nonatomic) UIImagePickerControllerCameraDevice cameraDevice;

La méthode cameraButtonPressed ouvre la caméra arrière. La méthode changeCam bascule entre la caméra arrière et la caméra frontale.

fichier .m

 

-(void) cameraButtonPressed 

{ 
overLay=[[UIView alloc]initWithFrame:CGRectMake(0,0, 320, 480)]; 

UIImage *CameraClickImg=[UIImage imageNamed:@"capture.png"]; 
UIButton *captureBtn=[UIButton buttonWithType:UIButtonTypeCustom]; 
[captureBtn setFrame:CGRectMake(35,440, 240,40)]; 
[captureBtn addTarget:self action:@selector(captureImage) forControlEvents:UIControlEventTouchUpInside]; 
[captureBtn setImage:CameraClickImg forState:UIControlStateNormal]; 



UIButton *changeBtn=[UIButton buttonWithType:UIButtonTypeCustom]; 
[changeBtn setFrame:CGRectMake(250,30, 40,40)]; 
[changeBtn addTarget:self action:@selector(changeCam) forControlEvents:UIControlEventTouchUpInside]; 
[changeBtn setImage:CameraClickImg forState:UIControlStateNormal]; 


picker = [[UIImagePickerController alloc] init]; 
picker.delegate = self; 
picker.allowsEditing = NO; 
picker.sourceType = UIImagePickerControllerSourceTypeCamera; 
picker.showsCameraControls=NO; 
picker.cameraFlashMode = UIImagePickerControllerCameraFlashModeOff; 
picker.cameraOverlayView=overLay; 
[self presentModalViewController: picker animated:YES]; 
[overLay addSubview:captureBtn]; 
[overLay addSubview:changeBtn]; 

[picker release]; 

[self.view addSubview:activityIndicator]; 

} 


-(void)captureImage 
{ 

[picker takePicture]; 


} 


-(void)changeCam 
{ 
if (picker.cameraDevice==UIImagePickerControllerCameraDeviceRear) 
    picker.cameraDevice=UIImagePickerControllerCameraDeviceFront; 
else 
    picker.cameraDevice=UIImagePickerControllerCameraDeviceRear; 


}