This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
private func isCodeInLimitBounds(codeReadable: AVMetadataMachineReadableCodeObject) -> Bool { | |
if let videoLayer = previewLayer as? AVCaptureVideoPreviewLayer, | |
let transformedObj = videoLayer.transformedMetadataObject(for: codeReadable), | |
let limitBounds = limitBounds { | |
return limitBounds.contains(transformedObj.bounds) | |
} | |
//ignore 'failure' above | |
return true | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class ReaderViewController: UIViewController { | |
@IBOutlet weak var videoPreview: UIView! | |
private var videoLayer: CALayer! | |
var codeReader: CodeReader! | |
override func viewDidLoad() { | |
videoLayer = codeReader.videoPreview | |
videoPreview.layer.addSublayer(videoLayer) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
override func setUp() { | |
super.setUp() | |
let mainStoryboard = UIStoryboard(name: "Main", bundle: nil) | |
readerVC = mainStoryboard.instantiateViewController(withIdentifier: "ReaderViewController") as! ReaderViewController | |
readerVC.dataSource = MockDataSource() | |
readerVC.codeReader = mockReader | |
//force the life cycle to be called | |
let window = UIApplication.shared.delegate!.window! |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
extension AVCodeReader: CodeReader { | |
func startReading(completion: @escaping (String) -> Void) { | |
self.didRead = completion | |
captureSession?.startRunning() | |
} | |
func stopReading() { | |
captureSession?.stopRunning() | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
protocol CodeReader { | |
func startReading(completion: @escaping (String) -> Void) | |
func stopReading() | |
var videoPreview: CALayer {get} | |
} |
NewerOlder