An example of how you can add cameraOverlayView to create a 200x200 square viewport in the center of the screen:
@IBAction func takePhoto(sender: AnyObject) { if !UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.Camera){ return } var imagePicker = UIImagePickerController() imagePicker.delegate = self imagePicker.sourceType = UIImagePickerControllerSourceType.Camera; //Create camera overlay let pickerFrame = CGRectMake(0, UIApplication.sharedApplication().statusBarFrame.size.height, imagePicker.view.bounds.width, imagePicker.view.bounds.height - imagePicker.navigationBar.bounds.size.height - imagePicker.toolbar.bounds.size.height) let squareFrame = CGRectMake(pickerFrame.width/2 - 200/2, pickerFrame.height/2 - 200/2, 200, 200) UIGraphicsBeginImageContext(pickerFrame.size) let context = UIGraphicsGetCurrentContext() CGContextSaveGState(context) CGContextAddRect(context, CGContextGetClipBoundingBox(context)) CGContextMoveToPoint(context, squareFrame.origin.x, squareFrame.origin.y) CGContextAddLineToPoint(context, squareFrame.origin.x + squareFrame.width, squareFrame.origin.y) CGContextAddLineToPoint(context, squareFrame.origin.x + squareFrame.width, squareFrame.origin.y + squareFrame.size.height) CGContextAddLineToPoint(context, squareFrame.origin.x, squareFrame.origin.y + squareFrame.size.height) CGContextAddLineToPoint(context, squareFrame.origin.x, squareFrame.origin.y) CGContextEOClip(context) CGContextMoveToPoint(context, pickerFrame.origin.x, pickerFrame.origin.y) CGContextSetRGBFillColor(context, 0, 0, 0, 1) CGContextFillRect(context, pickerFrame) CGContextRestoreGState(context) let overlayImage = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext(); let overlayView = UIImageView(frame: pickerFrame) overlayView.image = overlayImage imagePicker.cameraOverlayView = overlayView self.presentViewController(imagePicker, animated: true, completion: nil) }
Lyndsey scott
source share