ReviewViewController.swift 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. //
  2. // ReviewViewController.swift
  3. // WeScan
  4. //
  5. // Created by Boris Emorine on 2/25/18.
  6. // Copyright © 2018 WeTransfer. All rights reserved.
  7. //
  8. import UIKit
  9. @available(iOS 10, *)
  10. /// The `ReviewViewController` offers an interface to review the image after it has been cropped and deskwed according to the passed in quadrilateral.
  11. final class ReviewViewController: UIViewController {
  12. lazy private var imageView: UIImageView = {
  13. let imageView = UIImageView()
  14. imageView.clipsToBounds = true
  15. imageView.isOpaque = true
  16. imageView.image = results.scannedImage
  17. imageView.backgroundColor = .black
  18. imageView.contentMode = .scaleAspectFit
  19. imageView.translatesAutoresizingMaskIntoConstraints = false
  20. return imageView
  21. }()
  22. lazy private var doneButton: UIBarButtonItem = {
  23. let title = NSLocalizedString("wescan.review.button.done", comment: "A generic done button")
  24. let button = UIBarButtonItem(title: title, style: .done, target: self, action: #selector(finishScan))
  25. button.tintColor = navigationController?.navigationBar.tintColor
  26. return button
  27. }()
  28. private let results: ImageScannerResults
  29. // MARK: - Life Cycle
  30. init(results: ImageScannerResults) {
  31. self.results = results
  32. super.init(nibName: nil, bundle: nil)
  33. }
  34. required init?(coder aDecoder: NSCoder) {
  35. fatalError("init(coder:) has not been implemented")
  36. }
  37. override func viewDidLoad() {
  38. super.viewDidLoad()
  39. setupViews()
  40. setupConstraints()
  41. title = NSLocalizedString("wescan.review.title", comment: "The review title of the ReviewController")
  42. navigationItem.rightBarButtonItem = doneButton
  43. }
  44. // MARK: Setups
  45. private func setupViews() {
  46. view.addSubview(imageView)
  47. }
  48. private func setupConstraints() {
  49. let imageViewConstraints = [
  50. imageView.topAnchor.constraint(equalTo: view.topAnchor),
  51. imageView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
  52. view.bottomAnchor.constraint(equalTo: imageView.bottomAnchor),
  53. view.leadingAnchor.constraint(equalTo: imageView.leadingAnchor)
  54. ]
  55. NSLayoutConstraint.activate(imageViewConstraints)
  56. }
  57. // MARK: - Actions
  58. @objc private func finishScan() {
  59. if let imageScannerController = navigationController as? ImageScannerController {
  60. imageScannerController.imageScannerDelegate?.imageScannerController(imageScannerController, didFinishScanningWithResults: results)
  61. }
  62. }
  63. }