123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- import UIKit
- import AVFoundation
- @available(iOS 10, *)
- public protocol ImageScannerControllerDelegate: NSObjectProtocol {
-
-
-
-
-
-
-
- func imageScannerController(_ scanner: ImageScannerController, didFinishScanningWithResults results: ImageScannerResults)
-
-
-
-
-
-
- func imageScannerControllerDidCancel(_ scanner: ImageScannerController)
-
-
-
-
-
-
- func imageScannerController(_ scanner: ImageScannerController, didFailWithError error: Error)
- }
- @available(iOS 10, *)
- public final class ImageScannerController: UINavigationController {
-
-
- weak public var imageScannerDelegate: ImageScannerControllerDelegate?
-
-
-
-
- internal let blackFlashView: UIView = {
- let view = UIView()
- view.backgroundColor = UIColor(white: 0.0, alpha: 0.5)
- view.isHidden = true
- view.translatesAutoresizingMaskIntoConstraints = false
- return view
- }()
-
- public required init() {
- let scannerViewController = ScannerViewController()
- super.init(rootViewController: scannerViewController)
- navigationBar.tintColor = NCBrandColor.sharedInstance.brandText
- navigationBar.isTranslucent = false
- self.view.addSubview(blackFlashView)
- setupConstraints()
- }
-
- public override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
- super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
- }
-
- required public init?(coder aDecoder: NSCoder) {
- fatalError("init(coder:) has not been implemented")
- }
-
- private func setupConstraints() {
- let blackFlashViewConstraints = [
- blackFlashView.topAnchor.constraint(equalTo: view.topAnchor),
- blackFlashView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
- view.bottomAnchor.constraint(equalTo: blackFlashView.bottomAnchor),
- view.trailingAnchor.constraint(equalTo: blackFlashView.trailingAnchor)
- ]
-
- NSLayoutConstraint.activate(blackFlashViewConstraints)
- }
-
- override public var supportedInterfaceOrientations: UIInterfaceOrientationMask {
- return .portrait
- }
-
- internal func flashToBlack() {
- view.bringSubviewToFront(blackFlashView)
- blackFlashView.isHidden = false
- let flashDuration = DispatchTime.now() + 0.05
- DispatchQueue.main.asyncAfter(deadline: flashDuration) {
- self.blackFlashView.isHidden = true
- }
- }
-
- }
- public struct ImageScannerResults {
-
-
- public var originalImage: UIImage
-
-
- public var scannedImage: UIImage
-
-
- public var detectedRectangle: Quadrilateral
-
- }
|