You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

119 lines
3.3 KiB

5 years ago
5 years ago
5 years ago
5 years ago
  1. //
  2. // GMEAlertViewController.swift
  3. // GME Remit
  4. //
  5. // Created by InKwon Devik Kim on 02/07/2019.
  6. // Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
  7. //
  8. import UIKit
  9. class GMEAlertViewController: UIViewController {
  10. @IBOutlet private weak var titleLabel: UILabel!
  11. @IBOutlet private weak var messageLabel: UILabel!
  12. @IBOutlet private weak var rightButton: UIButton!
  13. @IBOutlet private weak var leftButton: UIButton!
  14. @IBOutlet private weak var mainView: UIView!
  15. @IBOutlet private weak var transParentView: UIView!
  16. @IBOutlet private weak var checkMarkView: CheckMark!
  17. @IBOutlet private weak var checkMarkContainerView: UIView!
  18. private var rightButtonAction: (() -> Void)?
  19. private var leftButtonAction: (() -> Void)?
  20. private var titleText: String?
  21. private var messageText: String?
  22. private var rightButtonTitle: String?
  23. private var leftButtonTitle: String?
  24. private var type: AlertType = .normal
  25. private let impact = UIImpactFeedbackGenerator()
  26. override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
  27. super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
  28. }
  29. required init?(coder aDecoder: NSCoder) {
  30. super.init(coder: aDecoder)
  31. }
  32. init(
  33. type: AlertType = .normal,
  34. title: String? = "Alert",
  35. message: String? = nil,
  36. rightButtonTitle: String? = nil,
  37. leftButtonTitle: String? = nil,
  38. rightButtonAction: (() -> Void)? = nil,
  39. leftButtonAction: (() -> Void)? = nil
  40. ) {
  41. super.init(nibName: "GMEAlertViewController", bundle: nil)
  42. self.type = type
  43. self.titleText = title
  44. self.messageText = message
  45. self.rightButtonTitle = rightButtonTitle
  46. self.leftButtonTitle = leftButtonTitle
  47. self.rightButtonAction = rightButtonAction
  48. self.leftButtonAction = leftButtonAction
  49. modalPresentationStyle = .overFullScreen
  50. modalTransitionStyle = .crossDissolve
  51. }
  52. override func viewDidLoad() {
  53. super.viewDidLoad()
  54. mainView.layer.cornerRadius = 5
  55. titleLabel.text = titleText
  56. messageLabel.text = messageText
  57. rightButton.setTitle(rightButtonTitle, for: .normal)
  58. leftButton.setTitle(leftButtonTitle, for: .normal)
  59. if leftButtonTitle == nil {
  60. leftButton.isEnabled = false
  61. leftButton.isHidden = true
  62. }
  63. titleLabel.textColor = .themeRed
  64. rightButton.backgroundColor = .themeRed
  65. transParentView.backgroundColor = .themeBackgroundGray
  66. }
  67. override func viewWillAppear(_ animated: Bool) {
  68. super.viewWillAppear(animated)
  69. impact.impactOccurred()
  70. mainView.popUpBouncy()
  71. switch type {
  72. case .normal:
  73. checkMarkContainerView.isHidden = true
  74. case .error:
  75. checkMarkContainerView.isHidden = false
  76. self.checkMarkView.animate(animationType: .error)
  77. case .success:
  78. checkMarkContainerView.isHidden = false
  79. self.checkMarkView.animate(animationType: .success)
  80. case .warning:
  81. checkMarkContainerView.isHidden = false
  82. self.checkMarkView.animate(animationType: .warning)
  83. }
  84. }
  85. @IBAction func touchRightButton(_ sender: UIButton) {
  86. self.dismiss(animated: false) {
  87. self.rightButtonAction?()
  88. }
  89. }
  90. @IBAction func touchLeftButton(_ sender: UIButton) {
  91. self.dismiss(animated: false) {
  92. self.leftButtonAction?()
  93. }
  94. }
  95. }