How to disable Preview screen when using UIImagePickerController Camera

In iOS7 the build-in camera app doesn’t go into the preview screen after taking a picture, is there any way that the UIImagePicker can behave like that.

UIImagePickerController * imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = self;
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
imagePicker.cameraFlashMode = UIImagePickerControllerCameraFlashModeOff;

I know another solution is to create a custom camera using the AVFoundation class, but that is beyond my knowledge at this point and I really like the looks of the default camera.


So after some more research I found out I could create my own shutter button and set it as a camera overlay. Here is what I did

UIButton *shutter = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[shutter addTarget:self action:@selector(shootPicture) forControlEvents:UIControlEventTouchUpInside];
[shutter setTitle:@"S" forState:UIControlStateNormal];
shutter.frame = CGRectMake(50, 50, 60, 60);

UIView *layoutView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
layoutView.opaque = NO;
layoutView.backgroundColor = [UIColor clearColor];
[layoutView addSubview:shutter];

For the ‘shootPicture’ method

- (void) shootPicture
   [picker takePicture];
   [self imagePickerController:self.camCtl didFinishPickingMediaWithInfo:nil];

If I just have the picker call ‘takePicture’ I will still get the preview, so instead I forced the picker to call didFinishPickingMediaWithInfo right after taking picture. The result is I don’t see the preview screen HOWEVER I don’t see the picture either. I know I put ‘nil’ in didFinishPickingMediaWithInfo because I don’t know what to put in at this point. I also know it took a picture is in cache somewhere but I really have no idea how to get it.

Any idea would be greatly appreciated =)

Source: Ios7 Questions