问题
Users need to be able to take photo of their ID. I need to add a blue frame to camera view as a guide. Guide should have same aspect ratio on all device sizes and fit a label with instructions. Can I accomplish this using UIImagePicker?
Here is some incomplete code. Thanks for any help.
UIImageView *overlayImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@""]];
CGRect overlayRect = CGRectMake(0, 0, self.view.frame.size.height - 16, self.view.frame.size.width - 16);
[overlayImage setFrame:overlayRect];
[self.imagePicker setCameraOverlayView:overlayImage];
回答1:
Use AVCaptureDevice
, AVCaptureSession
, AVCaptureVideoPreviewLayer
and AVCapturePhotoOutput
.
Set AVCaptureDeviceInput
as input of capture session, and photo output as output of capture session. Initialize AVCaptureVideoPreviewLayer
with AVCaptureSession
and add to your view.layer
thought addSublayer
. You can use UIViewController
from storyboard or programmatically instantiated controller, add picture of overlay or cornered view.layer.borderWidth
or UIBezierPath
. Set up controller as AVCapturePhotoCaptureDelegate
, add delegate methods. Use capturePhoto(with:delegate:)
method. Enjoy.
来源:https://stackoverflow.com/questions/53180657/draw-overlay-on-camera-ios