creating custom camera with square view on iOS

I am trying to create a custom camera experience on iOS and the following code snippet is as far as I got. Basically I want the usual camera view (i.e. with the following buttons: capture, flash, grid, front/back, cancel). But the only difference between the normal camera and mine is that I want a square for the preview surface; not a rectangle. And then, what you see is what you get (WYSIWYG) such that there is no cropping necessary; as the user would have taken a square picture in the first place.

I have also been looking at the library but I am not seeing how to customize it to my end. Any help? Thanks.

  • Count number of items in an array with a specific property value
  • Learn about the NSXMLParser in iOS
  • Try to load a created Map in MKMapView
  • UIScrollview animation depending on content offset
  • When will applicationWillTerminate be called?
  • NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle

    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view.
        //Capture Session
        AVCaptureSession *session = [[AVCaptureSession alloc]init];
        session.sessionPreset = AVCaptureSessionPresetPhoto;
        //Add device
        AVCaptureDevice *device =
        [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
        AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:device error:nil];
        if (!input)
            NSLog(@"No Input");
        [session addInput:input];
        AVCaptureVideoDataOutput *output = [[AVCaptureVideoDataOutput alloc] init];
        [session addOutput:output];
        output.videoSettings =
        @{ (NSString *)kCVPixelBufferPixelFormatTypeKey : @(kCVPixelFormatType_32BGRA) };
        //Preview Layer
        AVCaptureVideoPreviewLayer *previewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:session];
        UIView *myView = self.view;
        previewLayer.frame = myView.bounds;
        previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;
        [self.view.layer addSublayer:previewLayer];
        //Start capture session
        [session startRunning];

    This is the only custom code in a single view project on Xcode

    2 Solutions Collect From Internet About “creating custom camera with square view on iOS”

    You have two options for doing what you want, either stick with and customize a UIImagePickerController, or create your own by using the AVFoundation.

    The UIImagePickerController does provide a fair bit of customization options, and this similar thread has some good information on that: link.

    If you still want to make your own, I suggest heading over to the Apple Documentation and checking out this demo project called AVCam: link. However, it’s way more in-depth than you’ll probably need so I can recommend this video tutorial as well: link.

    If going for the last option, I would like to mention that to make the “actual camera” fit the frame of your previewLayer, you can set the videoGravity on the AVCaptureVideoPreviewLayer to AVLayerVideoGravityResizeAspectFill.

    Working with a custom camera can be a bit of a pain, but it’ll pay dividends given that you’ll really be able to customize your app experience.

    The easiest way to do it is to use TGCameraViewController.

    Using this TGCameraViewController, you can edit whole camera view. Also, It provides following functionalities:-

    • Easy way to access album (camera roll)
    • Flash auto, off and on
    • Focus
    • Front and back camera

    Also you can refer AVCamManual: Extending AVCam to Use Manual Capture document for creating own custom camera.