Blame view
App/camera/ConfirmViewController/MyConfirmViewController.swift
4.83 KB
|
1341bf603
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
import UIKit
import Photos
public class MyConfirmViewController: UIViewController {
let imageView = UIImageView()
var vBoard: Board!
@IBOutlet weak var cancelButton: UIButton!
@IBOutlet weak var confirmButton: UIButton!
public var userData: Any?
public var onComplete: CameraViewCompletion?
var asset: PHAsset!
public init(asset: PHAsset) {
self.asset = asset
super.init(nibName: "MyConfirmViewController", bundle: CameraGlobals.shared.bundle)
}
public override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = UIColor.black
imageView.contentMode = .scaleAspectFit
view.insertSubview(imageView, at: 0)
configUserData()
guard let asset = asset else { return }
let spinner = showSpinner()
disable()
_ = SingleImageFetcher()
.setAsset(asset)
.setTargetSize(largestPhotoSize())
.onSuccess { image in
self.configureWithImage(image)
self.hideSpinner(spinner)
self.enable()
}
.onFailure { error in
self.hideSpinner(spinner)
}
.fetch()
}
fileprivate func configUserData() {
|
|
fbd62afcf
|
45 46 47 48 49 50 51 52 53 54 55 56 |
if let boardObj = userData as? BoardObj, let shootItem = boardObj.shootItem, let ctruong = boardObj.cTruong, let singboard = ctruong.signboard {
if (singboard > 0) {
vBoard = Board()
vBoard.translatesAutoresizingMaskIntoConstraints = false
self.view.insertSubview(vBoard, at: 1)
NSLayoutConstraint.activate([vBoard.topAnchor.constraint(equalTo: view.topAnchor),
vBoard.leftAnchor.constraint(equalTo: view.leftAnchor),
vBoard.rightAnchor.constraint(equalTo: view.rightAnchor),
vBoard.bottomAnchor.constraint(equalTo: view.bottomAnchor)])
vBoard.initData(ctruong: ctruong, shootItem: shootItem);
}
}
|
|
1341bf603
|
57 58 59 60 61 |
}
public override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
imageView.frame = view.frame
|
|
1341bf603
|
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 |
}
//region utils ========
private func configureWithImage(_ image: UIImage) {
buttonActions()
imageView.image = image
imageView.sizeToFit()
view.setNeedsLayout()
}
private func buttonActions() {
confirmButton.action = { [weak self] in self?.confirmPhoto() }
cancelButton.action = { [weak self] in self?.cancel() }
}
internal func cancel() {
onComplete?(nil, nil)
}
internal func confirmPhoto() {
disable()
imageView.isHidden = true
let spinner = showSpinner()
var fetcher = SingleImageFetcher()
.onSuccess { image in
self.onComplete?(image, self.asset)
self.hideSpinner(spinner)
self.enable()
}
.onFailure { error in
self.hideSpinner(spinner)
self.showNoImageScreen(error)
}
.setAsset(asset)
fetcher = fetcher.fetch()
}
func showSpinner() -> UIActivityIndicatorView {
let spinner = UIActivityIndicatorView()
spinner.activityIndicatorViewStyle = .white
spinner.center = view.center
spinner.startAnimating()
view.addSubview(spinner)
view.bringSubview(toFront: spinner)
return spinner
}
func hideSpinner(_ spinner: UIActivityIndicatorView) {
spinner.stopAnimating()
spinner.removeFromSuperview()
}
func disable() {
confirmButton.isEnabled = false
}
func enable() {
confirmButton.isEnabled = true
}
func showNoImageScreen(_ error: NSError) {
let permissionsView = PermissionsView(frame: view.bounds)
let desc = localizedString("error.cant-fetch-photo.description")
permissionsView.configureInView(view, title: error.localizedDescription, descriptiom: desc, completion: cancel)
}
public required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
public override var prefersStatusBarHidden: Bool {
return true
}
public override var preferredStatusBarUpdateAnimation: UIStatusBarAnimation {
return UIStatusBarAnimation.slide
}
override open var supportedInterfaceOrientations: UIInterfaceOrientationMask {
return UIInterfaceOrientationMask.landscape
}
//endregion
}
public class BoardObj {
|
|
fbd62afcf
|
153 154 |
var cTruong: CongTruong?;
var shootItem: ShootItem?;
|
|
1341bf603
|
155 |
|
|
fbd62afcf
|
156 157 158 159 |
init(cTruong: CongTruong?, shootItem: ShootItem?) {
self.cTruong = cTruong;
self.shootItem = shootItem;
}
|
|
1341bf603
|
160 |
} |