Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

UIImagePickerController - How do I access the front facing camera by default?

I am bringing up the camera with the following code from my ViewController:

- (void)viewDidLoad {
    self.imgPicker = [[UIImagePickerController alloc] init];
    self.imgPicker.sourceType = UIImagePickerControllerCameraDeviceFront;
    self.imgPicker.delegate = self;     
}

- (IBAction)grabCamera {
    [self presentModalViewController:self.imgPicker animated:YES];
}

How can I make it so the camera by default uses the front camera of the iPhone4 and not the back camera? I tried DeviceFront to no avail.

Also, How can I add a subview (half sized) ontop of this camera after grabCamera is pressed? If I have this subview in my MainWindow.xib I tried just saying addSubview after saying the presentModalViewController code but it didn't work... Do I need to create an NSTimer and load the addSubview after the camera display is fully presented or do I need to use something else (similar to z-index in CSS) The answer to the second question is imgPicker.cameraOverlayView = viewName;

Thanks all!

like image 871
Albert Renshaw Avatar asked Jan 21 '12 01:01

Albert Renshaw


1 Answers

UIImagePickerControllerCameraDeviceFront is not a valid enum for the sourceType property. The sourceType property defines whether you're using the camera or the photo library. You need to set the cameraDevice property instead.

Objective-C

self.imgPicker.sourceType = UIImagePickerControllerSourceTypeCamera;
self.imgPicker.cameraDevice = UIImagePickerControllerCameraDeviceFront;

Swift 2

imgPicker.sourceType = .Camera
imgPicker.cameraDevice = .Front

Swift 3

imgPicker.sourceType = .camera
imgPicker.cameraDevice = .front
like image 197
MattyG Avatar answered Nov 07 '22 06:11

MattyG