Skip to content
This repository has been archived by the owner on Sep 12, 2023. It is now read-only.
/ scanner-overlay Public archive

📹 AVCaptureVideoPreviewLayer with a masked overlay

License

Notifications You must be signed in to change notification settings

gaebel/scanner-overlay

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ScannerOverlay

ScannerOverlay extends AVCaptureVideoPreviewLayer with an overlay. You can define a masked area and setup the corners.

Installation

You can either install it via Swift Package Manager or copy the class from the Sources folder into your project.

Usage

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.

Settings

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

License

ScannerOverlay is available under the MIT license. See the LICENSE file for more info.