// // ReviewViewController.swift // WeScan // // Created by Boris Emorine on 2/25/18. // Copyright © 2018 WeTransfer. All rights reserved. // import UIKit @available(iOS 10, *) /// The `ReviewViewController` offers an interface to review the image after it has been cropped and deskwed according to the passed in quadrilateral. final class ReviewViewController: UIViewController { lazy private var imageView: UIImageView = { let imageView = UIImageView() imageView.clipsToBounds = true imageView.isOpaque = true imageView.image = results.scannedImage imageView.backgroundColor = .black imageView.contentMode = .scaleAspectFit imageView.translatesAutoresizingMaskIntoConstraints = false return imageView }() lazy private var doneButton: UIBarButtonItem = { let title = NSLocalizedString("wescan.review.button.done", comment: "A generic done button") let button = UIBarButtonItem(title: title, style: .done, target: self, action: #selector(finishScan)) button.tintColor = navigationController?.navigationBar.tintColor return button }() private let results: ImageScannerResults // MARK: - Life Cycle init(results: ImageScannerResults) { self.results = results super.init(nibName: nil, bundle: nil) } required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } override func viewDidLoad() { super.viewDidLoad() setupViews() setupConstraints() title = NSLocalizedString("wescan.review.title", comment: "The review title of the ReviewController") navigationItem.rightBarButtonItem = doneButton } // MARK: Setups private func setupViews() { view.addSubview(imageView) } private func setupConstraints() { let imageViewConstraints = [ imageView.topAnchor.constraint(equalTo: view.topAnchor), imageView.trailingAnchor.constraint(equalTo: view.trailingAnchor), view.bottomAnchor.constraint(equalTo: imageView.bottomAnchor), view.leadingAnchor.constraint(equalTo: imageView.leadingAnchor) ] NSLayoutConstraint.activate(imageViewConstraints) } // MARK: - Actions @objc private func finishScan() { if let imageScannerController = navigationController as? ImageScannerController { imageScannerController.imageScannerDelegate?.imageScannerController(imageScannerController, didFinishScanningWithResults: results) } } }