📹 AVCaptureVideoPreviewLayer with a masked overlay
ScannerOverlay extends AVCaptureVideoPreviewLayer
with an overlay. You can define a masked area and setup the corners.
You can either install it via Swift Package Manager or copy the class from the Sources folder into your project.
At first setup your AVCaptureSession
, then initiate the ScannerOverlay with it, and after that add it as a sublayer to your view.
let scannerOverlayPreviewLayer = ScannerOverlayPreviewLayer(session: captureSession)
scannerOverlayPreviewLayer.frame = self.view.bounds
scannerOverlayPreviewLayer.maskSize = CGSize(width: 200, height: 200)
scannerOverlayPreviewLayer.videoGravity = .resizeAspectFill
self.view.layer.addSublayer(scannerOverlayPreviewLayer)
If you want to limit the video capturing to the masked area you have to set the rectOfInterest
of your AVCaptureMetadataOutput
.
metadataOutput.rectOfInterest = scannerOverlayPreviewLayer.rectOfInterest
Keep in mind that the overlay won’t show in the simulator - for testing run the code on your device.
For an example implementation refer to the demo project in the Sources folder.
Parameter | Description |
maskSize | Specifies the size of the masked area |
cornerLength | Specifies the length of the corners |
lineWidth | Specifies the line width of the corners |
lineColor | Specifies the line color of the corners |
lineCap | Specifies the line cap of the corner endpoints |
backgroundColor | Specifies the backgroundColor of the outer masked area |
cornerRadius | Specifies the corner radius of the masked area |
ScannerOverlay is available under the MIT license. See the LICENSE file for more info.