Commit 28ca0e6af659c579db93f07501441c6112a8f8e0

Authored by vlad.lopatynets
1 parent 4c96873d

no message

  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3 +<plist version="1.0">
  4 +<dict>
  5 + <key>SchemeUserState</key>
  6 + <dict>
  7 + <key>InterQR-Internship.xcscheme_^#shared#^_</key>
  8 + <dict>
  9 + <key>orderHint</key>
  10 + <integer>2</integer>
  11 + </dict>
  12 + </dict>
  13 +</dict>
  14 +</plist>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<Bucket
  3 + uuid = "369C53C4-55C8-4418-98C6-B9B8FCA67812"
  4 + type = "0"
  5 + version = "2.0">
  6 + <Breakpoints>
  7 + <BreakpointProxy
  8 + BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
  9 + <BreakpointContent
  10 + uuid = "24C8FE5B-99CC-430C-9B8A-90948FD44A96"
  11 + shouldBeEnabled = "No"
  12 + ignoreCount = "0"
  13 + continueAfterRunningActions = "No"
  14 + filePath = "InterQR-Internship/Modules/VerificationSceen/ViewController/VerificationViewController.swift"
  15 + startingColumnNumber = "9223372036854775807"
  16 + endingColumnNumber = "9223372036854775807"
  17 + startingLineNumber = "117"
  18 + endingLineNumber = "117"
  19 + landmarkName = "keyboardWillHide(notification:)"
  20 + landmarkType = "7">
  21 + </BreakpointContent>
  22 + </BreakpointProxy>
  23 + </Breakpoints>
  24 +</Bucket>
1 -<?xml version="1.0" encoding="UTF-8"?>  
2 -<Bucket  
3 - uuid = "A8BBD599-A0D6-48C1-A109-6E95E235F42B"  
4 - type = "0"  
5 - version = "2.0">  
6 -</Bucket>  
1 -//  
2 -// CodeVerificationViewController.swift  
3 -// InterQR-Internship  
4 -//  
5 -// Created by Дмитрий Тимофеев on 03.06.2022.  
6 -//  
7 -  
8 -import UIKit  
9 -  
10 -class CodeVerificationViewController: UIViewController {  
11 -  
12 - private let codeView = CodeVerificationView()  
13 -  
14 - override func loadView() {  
15 - view = codeView  
16 - }  
17 -  
18 - override func viewDidLoad() {  
19 - initViewController()  
20 - }  
21 -  
22 - private func initViewController() {  
23 - codeView.firstTextField.delegate = self  
24 - codeView.backButton.addTarget(self, action: #selector(didDismissVC), for: .touchUpInside)  
25 - codeView.verifyButton.addTarget(self, action: #selector(didVerifyCode), for: .touchUpInside)  
26 - NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow(notification:)), name: UIResponder.keyboardWillShowNotification, object: nil)  
27 - NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide), name: UIResponder.keyboardWillHideNotification, object: nil)  
28 - }  
29 -  
30 -// deinit {  
31 -// NotificationCenter.default.removeObserver(self, name: UIResponder.keyboardWillShowNotification, object: nil)  
32 -// NotificationCenter.default.removeObserver(self, name: UIResponder.keyboardWillHideNotification, object: nil)  
33 -// }  
34 -}  
35 -  
36 -extension CodeVerificationViewController {  
37 -  
38 - @objc func didDismissVC() {  
39 - dismiss(animated: true, completion: nil)  
40 - }  
41 -  
42 - @objc func didVerifyCode() {  
43 - codeView.firstTextField.backgroundColor = UIColor(red: 255/255, green: 237/255, blue: 240/255, alpha: 1)  
44 - codeView.secondTextField.backgroundColor = UIColor(red: 255/255, green: 237/255, blue: 240/255, alpha: 1)  
45 - codeView.thirdTextField.backgroundColor = UIColor(red: 255/255, green: 237/255, blue: 240/255, alpha: 1)  
46 - codeView.fourthTextField.backgroundColor = UIColor(red: 255/255, green: 237/255, blue: 240/255, alpha: 1)  
47 -  
48 - codeView.firstTextField.textColor = UIColor(red: 255/255, green: 0/255, blue: 46/255, alpha: 1)  
49 - codeView.secondTextField.textColor = UIColor(red: 255/255, green: 0/255, blue: 46/255, alpha: 1)  
50 - codeView.thirdTextField.textColor = UIColor(red: 255/255, green: 0/255, blue: 46/255, alpha: 1)  
51 - codeView.fourthTextField.textColor = UIColor(red: 255/255, green: 0/255, blue: 46/255, alpha: 1)  
52 -  
53 - codeView.errorAlertLabel.isHidden = false  
54 - }  
55 -  
56 - @objc func keyboardWillShow(notification: NSNotification) {  
57 -// if let keyboardFrame: NSValue = notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue {  
58 -// let keyboardHeight = keyboardFrame.cgRectValue.height  
59 -// // let bottomSpace =  
60 -// if self.view.frame.origin.y == 0 {  
61 -// self.view.frame.origin.y -= keyboardFrame.height  
62 -// }  
63 - if let keyboardSize = (notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue {  
64 - if self.view.frame.origin.y == 0 {  
65 -// self.view.frame.origin.y -= keyboardSize.height - 150  
66 - codeView.containerView.frame.origin.y -= keyboardSize.height - 150  
67 - codeView.shieldImage.frame.origin.x += view.frame.origin.x + 100  
68 - }  
69 - }  
70 - }  
71 -  
72 - @objc func keyboardWillHide() {  
73 - if self.view.frame.origin.y != 0 {  
74 - self.view.frame.origin.y = 0  
75 - }  
76 - }  
77 -  
78 -}  
79 -  
80 -extension CodeVerificationViewController: UITextFieldDelegate {  
81 -  
82 - func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {  
83 -  
84 - true  
85 - }  
86 -}  
1 -//  
2 -// ViewController.swift  
3 -// InterQR-Internship  
4 -//  
5 -// Created by Дмитрий Тимофеев on 30.05.2022.  
6 -//  
7 -  
8 -import UIKit  
9 -  
10 -class VerificationViewController: UIViewController {  
11 -  
12 - var isKeyboardAppear = false  
13 - private let mainView = VerificationView()  
14 -  
15 - lazy var phonePickerModels: [PhonePickerModel] = {  
16 - var models: [PhonePickerModel] = []  
17 -  
18 - for (code, value) in PhoneService.phones  
19 - {  
20 - models.append(.init(code: code, countryCode: value.1, title: value.0, icon: value.2))  
21 - }  
22 - return models  
23 - }()  
24 -  
25 - override func loadView() {  
26 - view = mainView  
27 - }  
28 - override func viewDidLoad() {  
29 - super.viewDidLoad()  
30 - initViewController()  
31 - }  
32 -  
33 -  
34 - private func initViewController() {  
35 - mainView.phonePickerView.phoneNumberPicker.delegate = self  
36 - mainView.phonePickerView.phoneNumberPicker.dataSource = self  
37 - mainView.showPickerButton.addTarget(self, action: #selector(didshowPickerButtonTapped(_:)), for: .touchUpInside)  
38 - mainView.phonePickerView.selectButton.addTarget(self, action: #selector(didshowPickerButtonTapped(_:)), for: .touchUpInside)  
39 - mainView.phonePickerView.titleButton.addTarget(self, action: #selector(didshowPickerButtonTapped(_:)), for: .touchDragInside)  
40 - mainView.continueButton.addTarget(self, action: #selector(didShowCodeVerificationVC), for: .touchUpInside)  
41 - NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow(notification:)), name: UIResponder.keyboardWillShowNotification, object: nil)  
42 - NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide(notification:)), name: UIResponder.keyboardWillHideNotification, object: nil)  
43 - }  
44 -  
45 -}  
46 -  
47 -//MARK: targets  
48 -extension VerificationViewController {  
49 - // @objc private func didRadioButtonTapped(_ sender: UIButton) {  
50 - // switch sender {  
51 - // case mainView.phoneNumberButton :  
52 - // mainView.emailButton.isSelected = false  
53 - // mainView.phoneNumberButton.isSelected = true  
54 - //// mainView.phonymberTextField.isHidden = false  
55 - //// mainView.emailTextField.isHidden = true  
56 - // case mainView.emailButton:  
57 - // mainView.emailButton.isSelected = true  
58 - // mainView.phoneNumberButton.isSelected = false  
59 - // default:  
60 - // return  
61 - // }  
62 - // }  
63 -  
64 - @objc private func didshowPickerButtonTapped(_ sender: UIButton) {  
65 - mainView.isShow ? mainView.showPickerView() : mainView.hidePicerView()  
66 - mainView.isShow.toggle()  
67 - }  
68 -  
69 - @objc private func didShowCodeVerificationVC() {  
70 - let vc = CodeVerificationViewController()  
71 - vc.modalPresentationStyle = .fullScreen  
72 - present(vc, animated: true)  
73 - }  
74 -  
75 - @objc func keyboardWillShow(notification: NSNotification) {  
76 - // if let keyboardFrame: NSValue = notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue {  
77 - // let keyboardHeight = keyboardFrame.cgRectValue.height  
78 - // // let bottomSpace =  
79 - // if self.view.frame.origin.y == 0 {  
80 - // self.view.frame.origin.y -= keyboardFrame.height  
81 - // }  
82 - // if let keyboardSize = (notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue {  
83 - // if self.view.frame.origin.y == 0 {  
84 - // self.view.frame.origin.y -= keyboardSize.height - 150  
85 - // mainView.phoneTextField.frame.origin.y -= 60  
86 - // mainView.enterChosenAuthenticatorLabel.frame.origin.y -= 60  
87 - // codeView.shieldImage.frame.origin.x += view.frame.origin.x + 100  
88 - if !isKeyboardAppear {  
89 -  
90 - if mainView.phoneTextField.frame.origin.y == mainView.phoneTextField.frame.origin.y && mainView.enterChosenAuthenticatorLabel.frame.origin.y == mainView.enterChosenAuthenticatorLabel.frame.origin.y{  
91 - mainView.phoneTextField.frame.origin.y -= 100  
92 - mainView.emailTextField.frame.origin.y -= 100  
93 - mainView.enterChosenAuthenticatorLabel.frame.origin.y -= 100  
94 - mainView.chooseLabel.frame.origin.y -= 80  
95 - mainView.emailButton.frame.origin.y -= 80  
96 - mainView.phoneNumberButton.frame.origin.y -= 80  
97 - mainView.dividingLineView.frame.origin.y -= 80  
98 - }  
99 -  
100 - isKeyboardAppear = true  
101 - }  
102 - // }  
103 - // }  
104 - }  
105 -  
106 - @objc func keyboardWillHide(notification: NSNotification) {  
107 -  
108 - if isKeyboardAppear {  
109 -  
110 - if mainView.phoneTextField.frame.origin.y != 0 && mainView.enterChosenAuthenticatorLabel.frame.origin.y != 0{  
111 - mainView.phoneTextField.frame.origin.y += 100  
112 - mainView.emailTextField.frame.origin.y += 100  
113 - mainView.enterChosenAuthenticatorLabel.frame.origin.y += 100  
114 - mainView.chooseLabel.frame.origin.y += 80  
115 - mainView.emailButton.frame.origin.y += 80  
116 - mainView.phoneNumberButton.frame.origin.y += 80  
117 - mainView.dividingLineView.frame.origin.y += 80  
118 - }  
119 -  
120 -  
121 - isKeyboardAppear = false  
122 - }  
123 - // mainView.phoneTextField.frame.origin.y += 60  
124 - // mainView.enterChosenAuthenticatorLabel.frame.origin.y += 60  
125 -  
126 - }  
127 -}  
128 -  
129 -//MARK: table view delegate and datasource  
130 -extension VerificationViewController {  
131 -  
132 -}  
133 -  
134 -extension VerificationViewController: UIPickerViewDataSource, UIPickerViewDelegate {  
135 -  
136 - func numberOfComponents(in pickerView: UIPickerView) -> Int { return 1 }  
137 -  
138 - func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {  
139 - return phonePickerModels.count  
140 -  
141 - }  
142 -  
143 - func pickerView(_ pickerView: UIPickerView, rowHeightForComponent component: Int) -> CGFloat {  
144 - 60  
145 - }  
146 -  
147 - // func pickerView(_ pickerView: UIPickerView, widthForComponent component: Int) -> CGFloat {  
148 - // return 130.0  
149 - // }  
150 -  
151 - func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView {  
152 - let model = phonePickerModels[row]  
153 - return PickerView.create(icon: model.icon, title: model.title, code: model.countryCode)  
154 - }  
155 -  
156 - func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {  
157 - pickerView.subviews[1].backgroundColor = .clear  
158 - let model = phonePickerModels[row]  
159 - mainView.phoneTextField.text = "\(model.countryCode)"  
160 - mainView.flagPickerView.image = model.icon  
161 - }  
162 -}  
163 -  
1 -//  
2 -// CodeVerificationView.swift  
3 -// InterQR-Internship  
4 -//  
5 -// Created by Дмитрий Тимофеев on 03.06.2022.  
6 -//  
7 -  
8 -import UIKit  
9 -  
10 -class CodeVerificationView: UIView {  
11 -  
12 - var containerView: UIView = {  
13 - var obj = UIView()  
14 - return obj  
15 - }()  
16 - var backButton: UIButton = {  
17 - var obj = UIButton()  
18 - obj.setImage(UIImage(named: "BackPointer"), for: .normal)  
19 - obj.backgroundColor = .white  
20 - obj.layer.borderColor = UIColor(red: 224/255, green: 231/255, blue: 232/255, alpha: 1).cgColor  
21 - obj.layer.cornerRadius = 13  
22 - obj.layer.borderWidth = 1  
23 - return obj  
24 - }()  
25 - var logoImage: UIImageView = {  
26 - var obj = UIImageView()  
27 - obj.image = UIImage(named: "InterQR")  
28 - return obj  
29 - }()  
30 - var shieldImage: UIImageView = {  
31 - var obj = UIImageView()  
32 - obj.image = UIImage(named: "Lock")  
33 - return obj  
34 - }()  
35 - var descriptionLabel: UILabel = {  
36 - var obj = UILabel()  
37 - obj.font = UIFont(name: SkModernistFontType.bold.rawValue, size: 35)  
38 - obj.text = "Enter your\nverification code"  
39 - obj.numberOfLines = 2  
40 - return obj  
41 - }()  
42 - var firstTextField: UITextField = {  
43 - var obj = UITextField()  
44 - obj.backgroundColor = UIColor(red: 243/255, green: 243/255, blue: 243/255, alpha: 1)  
45 - obj.layer.cornerRadius = 15  
46 - obj.keyboardType = .numberPad  
47 - obj.textAlignment = .center  
48 - obj.textContentType = .oneTimeCode  
49 - obj.becomeFirstResponder()  
50 - return obj  
51 - }()  
52 - var secondTextField: UITextField = {  
53 - var obj = UITextField()  
54 - obj.backgroundColor = UIColor(red: 243/255, green: 243/255, blue: 243/255, alpha: 1)  
55 - obj.layer.cornerRadius = 15  
56 - obj.keyboardType = .numberPad  
57 - obj.textAlignment = .center  
58 - obj.textContentType = .oneTimeCode  
59 - obj.isEnabled = false  
60 - return obj  
61 - }()  
62 - var thirdTextField: UITextField = {  
63 - var obj = UITextField()  
64 - obj.backgroundColor = UIColor(red: 243/255, green: 243/255, blue: 243/255, alpha: 1)  
65 - obj.layer.cornerRadius = 15  
66 - obj.keyboardType = .numberPad  
67 - obj.textAlignment = .center  
68 - obj.textContentType = .oneTimeCode  
69 - obj.isEnabled = false  
70 - return obj  
71 - }()  
72 - var fourthTextField: UITextField = {  
73 - var obj = UITextField()  
74 - obj.backgroundColor = UIColor(red: 243/255, green: 243/255, blue: 243/255, alpha: 1)  
75 - obj.layer.cornerRadius = 15  
76 - obj.keyboardType = .numberPad  
77 - obj.textAlignment = .center  
78 - obj.textContentType = .oneTimeCode  
79 - obj.isEnabled = false  
80 - return obj  
81 - }()  
82 - var errorAlertLabel: UILabel = {  
83 - var obj = UILabel()  
84 - obj.text = "Please, enter valid verification code"  
85 - obj.font = UIFont(name: SkModernistFontType.regular.rawValue, size: 14)  
86 - obj.textColor = UIColor(red: 255/255, green: 0/255, blue: 46/255, alpha: 1)  
87 - obj.isHidden = true  
88 - return obj  
89 - }()  
90 - var verifyButton: UIButton = {  
91 - var obj = UIButton()  
92 - obj.setImage(UIImage(named: "RectangleWithShadow"), for: .normal)  
93 - return obj  
94 - }()  
95 - var verifyLabel: UILabel = {  
96 - var obj = UILabel()  
97 - obj.font = UIFont(name: SkModernistFontType.bold.rawValue, size: 16)  
98 - obj.textColor = .white  
99 - obj.text = "Verify"  
100 - return obj  
101 - }()  
102 - var tickImage: UIImageView = {  
103 - var obj = UIImageView()  
104 - obj.image = UIImage(named: "Tick")  
105 - return obj  
106 - }()  
107 - override init(frame: CGRect) {  
108 - super.init(frame: frame)  
109 - layout()  
110 - }  
111 -  
112 - required init?(coder: NSCoder) {  
113 - fatalError("init(coder:) has not been implemented")  
114 - }  
115 -  
116 - func layout() {  
117 - backgroundColor = .white  
118 - addSubview(backButton)  
119 - addSubview(logoImage)  
120 - addSubview(shieldImage)  
121 - addSubview(containerView)  
122 - containerView.addSubview(descriptionLabel)  
123 - containerView.addSubview(firstTextField)  
124 - containerView.addSubview(secondTextField)  
125 - containerView.addSubview(thirdTextField)  
126 - containerView.addSubview(fourthTextField)  
127 - containerView.addSubview(errorAlertLabel)  
128 - containerView.addSubview(verifyButton)  
129 - verifyButton.addSubview(verifyLabel)  
130 - verifyButton.addSubview(tickImage)  
131 -  
132 - backButton.snp.makeConstraints {  
133 - $0.top.equalTo(snp.top).offset(66)  
134 - $0.leading.equalTo(snp.leading).offset(22)  
135 - $0.height.width.equalTo(45)  
136 - }  
137 - logoImage.snp.makeConstraints {  
138 - $0.leading.equalTo(backButton.snp.trailing).offset(20)  
139 - $0.centerY.equalTo(backButton)  
140 - }  
141 - shieldImage.snp.makeConstraints {  
142 - $0.top.equalTo(backButton.snp.bottom).offset(25)  
143 - $0.centerX.equalTo(snp.centerX)  
144 - }  
145 - containerView.snp.makeConstraints {  
146 - $0.top.equalTo(shieldImage.snp.bottom).offset(41)  
147 - $0.leading.trailing.equalToSuperview()  
148 - $0.height.equalTo(300)  
149 - }  
150 - descriptionLabel.snp.makeConstraints {  
151 - $0.leading.equalTo(containerView.snp.leading).offset(20)  
152 - $0.top.equalTo(containerView.snp.top)  
153 - }  
154 - firstTextField.snp.makeConstraints {  
155 - $0.leading.equalTo(containerView.snp.leading).offset(25)  
156 - $0.top.equalTo(descriptionLabel.snp.bottom).offset(28)  
157 - $0.height.equalTo(55)  
158 - }  
159 - secondTextField.snp.makeConstraints {  
160 - $0.leading.equalTo(firstTextField.snp.trailing).offset(12)  
161 - $0.centerY.equalTo(firstTextField)  
162 - $0.width.equalTo(firstTextField.snp.width)  
163 - $0.height.equalTo(55)  
164 - }  
165 - thirdTextField.snp.makeConstraints {  
166 - $0.leading.equalTo(secondTextField.snp.trailing).offset(12)  
167 - $0.centerY.equalTo(firstTextField)  
168 - $0.width.equalTo(firstTextField.snp.width)  
169 - $0.height.equalTo(55)  
170 - }  
171 - fourthTextField.snp.makeConstraints {  
172 - $0.leading.equalTo(thirdTextField.snp.trailing).offset(12)  
173 - $0.centerY.equalTo(firstTextField)  
174 - $0.trailing.equalTo(containerView.snp.trailing).offset(-25)  
175 - $0.width.equalTo(firstTextField.snp.width)  
176 - $0.height.equalTo(55)  
177 - }  
178 - errorAlertLabel.snp.makeConstraints {  
179 - $0.top.equalTo(firstTextField.snp.bottom).offset(8)  
180 - $0.leading.equalTo(firstTextField.snp.leading)  
181 - }  
182 - verifyButton.snp.makeConstraints {  
183 - $0.top.equalTo(firstTextField.snp.bottom).offset(67)  
184 - $0.left.right.equalToSuperview()  
185 - }  
186 - verifyLabel.snp.makeConstraints {  
187 - $0.left.equalToSuperview().offset(49)  
188 - $0.top.equalToSuperview().offset(22)  
189 - }  
190 - tickImage.snp.makeConstraints {  
191 - $0.right.equalToSuperview().offset(-47)  
192 - $0.centerY.equalTo(verifyLabel)  
193 - }  
194 - }  
195 -}  
1 -//  
2 -// PhoneNumberView.swift  
3 -// InterQR-Internship  
4 -//  
5 -// Created by Дмитрий Тимофеев on 31.05.2022.  
6 -//  
7 -  
8 -import UIKit  
9 -import CoreTelephony  
10 -  
11 -class PhoneNumberView: UIView {  
12 -  
13 - var containerPickerView: UIView = {  
14 - var view = UIView()  
15 - view.backgroundColor = .systemRed  
16 - return view  
17 - }()  
18 -  
19 - var titleButton: UIButton = {  
20 - var obj = UIButton()  
21 - obj.setTitle("Select your country", for: .normal)  
22 - obj.setTitleColor(UIColor(red: 50/255, green: 55/255, blue: 85/255, alpha: 1), for: .normal)  
23 - obj.titleLabel?.font = UIFont(name: SkModernistFontType.bold.rawValue, size: 18)  
24 - obj.titleLabel?.textAlignment = .center  
25 - return obj  
26 - }()  
27 -  
28 - var dividingLineView: UIView = {  
29 - var view = UIView()  
30 - view.backgroundColor = UIColor(red: 246/255, green: 246/255, blue: 246/255, alpha: 1)  
31 - return view  
32 - }()  
33 -  
34 - var phoneNumberPicker: UIPickerView = {  
35 - var picker = UIPickerView()  
36 - return picker  
37 - }()  
38 -  
39 - var selectButton: UIButton = {  
40 - var button = UIButton()  
41 -  
42 - button.backgroundColor = UIColor(red: 2/255, green: 115/255, blue: 185/255, alpha: 1)  
43 - button.clipsToBounds = true  
44 -  
45 - return button  
46 - }()  
47 -  
48 - var selectLabel: UILabel = {  
49 - var label = UILabel()  
50 - label.text = "Select"  
51 - label.font = UIFont(name: SkModernistFontType.bold.rawValue, size: 16)  
52 - label.textColor = .white  
53 - return label  
54 - }()  
55 -  
56 - override init(frame: CGRect) {  
57 - super.init(frame: frame)  
58 - layout()  
59 - setup()  
60 - backgroundColor = .white  
61 - }  
62 -  
63 - required init?(coder: NSCoder) {  
64 - fatalError("init(coder:) has not been implemented")  
65 - }  
66 -  
67 - func layout() {  
68 - self.backgroundColor = .white  
69 - addSubview(titleButton)  
70 - addSubview(dividingLineView)  
71 - addSubview(phoneNumberPicker)  
72 - addSubview(selectButton)  
73 -  
74 - selectButton.addSubview(selectLabel)  
75 -  
76 - titleButton.snp.makeConstraints { make in  
77 - make.top.equalToSuperview().offset(20)  
78 - make.leading.trailing.equalToSuperview()  
79 - }  
80 -  
81 - dividingLineView.snp.makeConstraints {  
82 - $0.left.right.equalToSuperview()  
83 - $0.height.equalTo(1)  
84 - $0.top.equalTo(titleButton.snp.bottom).offset(22)  
85 - }  
86 - phoneNumberPicker.snp.makeConstraints {  
87 - $0.left.right.equalToSuperview().inset(5)  
88 - $0.top.equalTo(dividingLineView.snp.bottom).offset(20)  
89 - }  
90 - selectButton.snp.makeConstraints {  
91 - $0.right.equalToSuperview()  
92 - $0.left.equalToSuperview()  
93 - $0.bottom.equalToSuperview()  
94 - $0.height.equalTo(70)  
95 - $0.top.equalTo(phoneNumberPicker.snp.bottom).offset(20)  
96 - }  
97 - selectLabel.snp.makeConstraints {  
98 - $0.centerX.equalTo(selectButton.snp.centerX)  
99 - $0.top.equalTo(selectButton.snp.top).offset(20)  
100 - }  
101 - }  
102 -}  
103 -  
104 -extension PhoneNumberView {  
105 -  
106 - func setup() {  
107 -  
108 - let countryCode: String  
109 - if let carrier = CTTelephonyNetworkInfo().serviceSubscriberCellularProviders?.first?.value,  
110 - let code = carrier.isoCountryCode?.uppercased() {  
111 - countryCode = code  
112 - } else {  
113 - countryCode = "USA"  
114 - }  
115 -  
116 - phoneNumberPicker.selectRow(0, inComponent: 0, animated: true)  
117 -  
118 - phoneNumberPicker.subviews[1].backgroundColor = .clear  
119 -  
120 - }  
121 -}  
122 -  
1 -//  
2 -// PickerView.swift  
3 -// InterQR-Internship  
4 -//  
5 -// Created by Дмитрий Тимофеев on 01.06.2022.  
6 -//  
7 -  
8 -import UIKit  
9 -  
10 -final class PickerView: UIView {  
11 -  
12 - private let iconView: UIImageView = {  
13 - var obj = UIImageView()  
14 - obj.contentMode = .scaleAspectFill  
15 - obj.layer.cornerRadius = 10  
16 - return obj  
17 - }()  
18 - private let label: UILabel = {  
19 - var obj = UILabel()  
20 - obj.textColor = UIColor(red: 50/255, green: 55/255, blue: 85/255, alpha: 1)  
21 - obj.font = UIFont(name: SkModernistFontType.bold.rawValue, size: 15)  
22 - return obj  
23 - }()  
24 - private let countryCode: UILabel = {  
25 - var obj = UILabel()  
26 - obj.textColor = UIColor(red: 50/255, green: 55/255, blue: 85/255, alpha: 1)  
27 - obj.font = UIFont(name: SkModernistFontType.bold.rawValue, size: 15)  
28 - return obj  
29 - }()  
30 - override init(frame: CGRect) {  
31 - super.init(frame: frame)  
32 - layout()  
33 - }  
34 -  
35 - required init?(coder: NSCoder) {  
36 - super.init(coder: coder)  
37 - layout()  
38 - }  
39 -  
40 - private func layout() {  
41 - addSubview(iconView)  
42 - addSubview(label)  
43 - addSubview(countryCode)  
44 -  
45 - iconView.snp.makeConstraints { make in  
46 - make.leading.equalToSuperview().offset(25)  
47 - make.centerY.equalTo(snp.centerY)  
48 -// make.top.bottom.equalToSuperview()  
49 - make.height.width.equalTo(20)  
50 - }  
51 -  
52 - label.snp.makeConstraints { make in  
53 - make.leading.equalTo(iconView.snp.trailing).offset(20)  
54 - make.top.bottom.equalToSuperview()  
55 - }  
56 -  
57 - countryCode.snp.makeConstraints { make in  
58 - make.trailing.equalToSuperview().offset(-25)  
59 - make.top.bottom.equalToSuperview()  
60 - }  
61 - }  
62 -  
63 - static func create(icon: UIImage, title: String, code: String) -> PickerView {  
64 - let numberView = PickerView()  
65 - numberView.iconView.image = icon  
66 - numberView.label.text = title  
67 - numberView.countryCode.text = code  
68 - return numberView  
69 - }  
70 -}  
1 -//  
2 -// TextFieldWithPadding.swift  
3 -// InterQR-Internship  
4 -//  
5 -// Created by Дмитрий Тимофеев on 01.06.2022.  
6 -//  
7 -  
8 -import UIKit  
9 -  
10 -class TextFieldWithPadding: UITextField {  
11 -  
12 - var textPaddingForEmail = UIEdgeInsets(  
13 - top: 0,  
14 - left: 22,  
15 - bottom: 0,  
16 - right: 22  
17 - )  
18 - var textPaddingForPhone = UIEdgeInsets(  
19 - top: 0,  
20 - left: 78,  
21 - bottom: 0,  
22 - right: 22  
23 - )  
24 -  
25 - override func textRect(forBounds bounds: CGRect) -> CGRect {  
26 - let rect = super.textRect(forBounds: bounds)  
27 - return rect.inset(by: textPaddingForPhone)  
28 - }  
29 -  
30 - override func editingRect(forBounds bounds: CGRect) -> CGRect {  
31 - let rect = super.editingRect(forBounds: bounds)  
32 - return rect.inset(by: textPaddingForPhone)  
33 - }  
34 -}  
1 -//  
2 -// VerificationView.swift  
3 -// InterQR-Internship  
4 -//  
5 -// Created by Дмитрий Тимофеев on 30.05.2022.  
6 -//  
7 -  
8 -import Foundation  
9 -import UIKit  
10 -  
11 -class VerificationView: UIView {  
12 -  
13 - var isShow: Bool = false  
14 -  
15 - var logoImage: UIImageView = {  
16 - var view = UIImageView()  
17 - view.image = UIImage(named: "InterQR")  
18 - return view  
19 - }()  
20 - var greetingsLabel: UILabel = {  
21 - var label = UILabel()  
22 - label.text = "Hello"  
23 - label.font = UIFont(name: SkModernistFontType.bold.rawValue, size: 35)  
24 - return label  
25 - }()  
26 - var verifyLabel: UILabel = {  
27 - var label = UILabel()  
28 - label.text = "Lets verify your \naccount"  
29 - label.numberOfLines = 2  
30 - label.font = UIFont(name: SkModernistFontType.regular.rawValue, size: 28)  
31 - return label  
32 - }()  
33 - var shieldImage: UIImageView = {  
34 - var view = UIImageView()  
35 - view.image = UIImage(named: "Shield")  
36 - return view  
37 - }()  
38 - var chooseLabel: UILabel = {  
39 - var label = UILabel()  
40 - label.text = "Choose what to start with"  
41 - label.font = UIFont(name: SkModernistFontType.bold.rawValue, size: 16)  
42 - label.font = .systemFont(ofSize: 16, weight: .bold)  
43 - return label  
44 - }()  
45 - var emailButton: UIButton = {  
46 - var button = UIButton()  
47 - button.setTitle("Email", for: .normal)  
48 - button.setTitleColor(UIColor(red: 50/255, green: 55/255, blue: 85/255, alpha: 1), for: .normal)  
49 - button.setTitleColor(UIColor(red: 185/255, green: 185/255, blue: 185/255, alpha: 1), for: .disabled)  
50 - button.imageEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 14)  
51 - button.titleEdgeInsets = UIEdgeInsets(top: 0, left: 14, bottom: 0, right: 0)  
52 - button.setImage(UIImage(named: "OnIndicator"), for: .normal)  
53 - button.setImage(UIImage(named: "OffIndicator"), for: .selected)  
54 - button.contentMode = .left  
55 - return button  
56 - }()  
57 -// var emailIndicatorImage: UIImageView = {  
58 -// var image = UIImageView()  
59 -// image.image = UIImage(named: "OnIndicator")  
60 -// return image  
61 -// }()  
62 - var phoneNumberButton: UIButton = {  
63 - var button = UIButton()  
64 - button.setTitle("Phone Number", for: .normal)  
65 - button.setTitleColor(UIColor(red: 50/255, green: 55/255, blue: 85/255, alpha: 1), for: .normal)  
66 - button.setTitleColor(UIColor(red: 185/255, green: 185/255, blue: 185/255, alpha: 1), for: .disabled)  
67 - button.imageEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 14)  
68 - button.titleEdgeInsets = UIEdgeInsets(top: 0, left: 14, bottom: 0, right: 10)  
69 - button.setImage(UIImage(named: "OnIndicator"), for: .selected)  
70 - button.setImage(UIImage(named: "OffIndicator"), for: .normal)  
71 - return button  
72 - }()  
73 -// var phoneNumberIndicatorImage: UIImageView = {  
74 -// var image = UIImageView()  
75 -// image.image = UIImage(named: "OffIndicator")  
76 -// return image  
77 -// }()  
78 -// var pickEmailLabel: UILabel = {  
79 -// var label = UILabel()  
80 -// label.text = "Email"  
81 -// label.font = UIFont(name: SkModernistFontType.regular.rawValue, size: 15)  
82 -// return label  
83 -// }()  
84 -// var pickPhoneLabel: UILabel = {  
85 -// var label = UILabel()  
86 -// label.text = "Phone Number"  
87 -// label.textColor = UIColor(red: 185/255, green: 185/255, blue: 185/255, alpha: 1)  
88 -// label.font = UIFont(name: SkModernistFontType.regular.rawValue, size: 15)  
89 -// return label  
90 -// }()  
91 - var dividingLineView: UIView = {  
92 - var view = UIView()  
93 - view.backgroundColor = UIColor(red: 246/255, green: 246/255, blue: 246/255, alpha: 1)  
94 - return view  
95 - }()  
96 - var enterChosenAuthenticatorLabel: UILabel = {  
97 - var label = UILabel()  
98 - label.text = "Enter your email address"  
99 - label.font = UIFont(name: SkModernistFontType.bold.rawValue, size: 16)  
100 - return label  
101 - }()  
102 - var emailTextField: UITextField = {  
103 - var textField = UITextField()  
104 - textField.backgroundColor = UIColor(red: 243/255, green: 243/255, blue: 243/255, alpha: 1)  
105 - textField.textAlignment = .left  
106 - textField.layer.cornerRadius = 15  
107 - textField.keyboardType = .emailAddress  
108 - textField.placeholder = "Example: john.doe@gmail.com"  
109 - textField.font = UIFont(name: SkModernistFontType.regular.rawValue, size: 15)  
110 - textField.layer.masksToBounds = true  
111 - textField.leftView = UIView(frame: CGRect(x: 0, y: 0, width: 22, height: textField.frame.height))  
112 - textField.leftViewMode = .always  
113 - return textField  
114 - }()  
115 - var phoneTextField: TextFieldWithPadding = {  
116 - var textField = TextFieldWithPadding()  
117 - textField.backgroundColor = UIColor(red: 243/255, green: 243/255, blue: 243/255, alpha: 1)  
118 - textField.textAlignment = .left  
119 - textField.layer.cornerRadius = 15  
120 - textField.keyboardType = .numberPad  
121 - textField.text = "+1"  
122 - textField.font = UIFont(name: SkModernistFontType.regular.rawValue, size: 15)  
123 - textField.layer.masksToBounds = true  
124 - textField.isHidden = true  
125 - return textField  
126 - }()  
127 - var verificationDescriptionLabel: UILabel = {  
128 - var label = UILabel()  
129 - label.numberOfLines = 0  
130 - label.text = "Verification code will be sent to your e-mail"  
131 - label.font = UIFont(name: "Sk-Modernist", size: 14)  
132 - label.font = .systemFont(ofSize: 14, weight: .regular)  
133 - return label  
134 - }()  
135 - var continueButton: UIButton = {  
136 - var button = UIButton()  
137 - button.setImage(UIImage(named: "RectangleWithShadow"), for: .normal)  
138 - button.clipsToBounds = true  
139 - button.contentMode = .scaleAspectFit  
140 - button.layer.cornerRadius = 15  
141 - return button  
142 - }()  
143 - var continueLabel: UILabel = {  
144 - var label = UILabel()  
145 - label.text = "Continue"  
146 - label.font = UIFont(name: SkModernistFontType.bold.rawValue, size: 16)  
147 - label.textColor = .white  
148 - return label  
149 - }()  
150 - var pointerImage: UIImageView = {  
151 - var image = UIImageView()  
152 - image.image = UIImage(named: "Pointer")  
153 - return image  
154 - }()  
155 - var phonePickerView: PhoneNumberView = {  
156 - var view = PhoneNumberView()  
157 - view.isUserInteractionEnabled = true  
158 - return view  
159 - }()  
160 - var showPickerButton: UIButton = {  
161 - var button = UIButton()  
162 - button.isHidden = true  
163 - return button  
164 - }()  
165 - var flagPickerView: UIImageView = {  
166 - var image = UIImageView()  
167 - image.image = UIImage(named: "USA")  
168 - image.layer.cornerRadius = 11  
169 - image.contentMode = .scaleAspectFit  
170 - return image  
171 - }()  
172 - var flagPointerView: UIImageView = {  
173 - var image = UIImageView()  
174 - image.image = UIImage(named: "FlagPointer")  
175 - return image  
176 - }()  
177 -  
178 - override init(frame: CGRect) {  
179 - super.init(frame: frame)  
180 - backgroundColor = .white  
181 - layout()  
182 - phoneNumberButton.addTarget(self, action: #selector(choosePhoneCode), for: .touchUpInside)  
183 - emailButton.addTarget(self, action: #selector(chooseEmail), for: .touchUpInside)  
184 - }  
185 -  
186 - required init?(coder: NSCoder) {  
187 - fatalError("init(coder:) has not been implemented")  
188 - }  
189 -  
190 - func layout() {  
191 -  
192 - addSubview(logoImage)  
193 - addSubview(greetingsLabel)  
194 - addSubview(verifyLabel)  
195 - addSubview(shieldImage)  
196 -  
197 - addSubview(chooseLabel)  
198 - addSubview(emailButton)  
199 - addSubview(phoneNumberButton)  
200 -// phoneNumberButton.addSubview(pickPhoneLabel)  
201 -// phoneNumberButton.addSubview(phoneNumberIndicatorImage)  
202 - addSubview(dividingLineView)  
203 -  
204 - addSubview(enterChosenAuthenticatorLabel)  
205 - addSubview(emailTextField)  
206 - addSubview(phoneTextField)  
207 - addSubview(verificationDescriptionLabel)  
208 - phoneTextField.addSubview(showPickerButton)  
209 -  
210 - showPickerButton.addSubview(flagPickerView)  
211 - showPickerButton.addSubview(flagPointerView)  
212 -  
213 - addSubview(continueButton)  
214 - continueButton.addSubview(continueLabel)  
215 - continueButton.addSubview(pointerImage)  
216 -  
217 - addSubview(phonePickerView)  
218 -  
219 - logoImage.snp.makeConstraints {  
220 - $0.top.equalTo(snp.top).offset(80)  
221 - $0.left.equalTo(snp.left).offset(27)  
222 - }  
223 - greetingsLabel.snp.makeConstraints {  
224 - $0.top.equalTo(logoImage.snp.bottom).offset(42)  
225 - $0.left.equalTo(snp.left).offset(24)  
226 - }  
227 - shieldImage.snp.makeConstraints {  
228 - $0.right.equalToSuperview()  
229 - $0.top.equalTo(logoImage.snp.bottom).offset(27)  
230 - }  
231 - verifyLabel.snp.makeConstraints {  
232 - $0.left.equalTo(27)  
233 - $0.top.equalTo(greetingsLabel.snp.bottom).offset(10)  
234 - }  
235 - chooseLabel.snp.makeConstraints {  
236 - $0.top.equalTo(shieldImage.snp.bottom).offset(52)  
237 - $0.left.equalTo(snp.left).offset(27)  
238 - }  
239 - emailButton.snp.makeConstraints {  
240 - $0.left.equalTo(snp.left).offset(27)  
241 - $0.top.equalTo(chooseLabel.snp.bottom).offset(29)  
242 - $0.height.equalTo(20)  
243 - }  
244 - phoneNumberButton.snp.makeConstraints {  
245 - $0.top.equalTo(emailButton.snp.top)  
246 - $0.height.equalTo(20)  
247 - $0.left.equalTo(snp.left).offset(144)  
248 - }  
249 - dividingLineView.snp.makeConstraints {  
250 - $0.left.right.equalToSuperview()  
251 - $0.top.equalTo(emailButton.snp.bottom).offset(41)  
252 - $0.height.equalTo(1)  
253 - }  
254 - enterChosenAuthenticatorLabel.snp.makeConstraints {  
255 - $0.top.equalTo(dividingLineView.snp.bottom).offset(39)  
256 - $0.left.equalTo(logoImage.snp.left)  
257 - }  
258 - emailTextField.snp.makeConstraints {  
259 - $0.left.equalTo(logoImage.snp.left)  
260 - $0.right.equalTo(snp.right).offset(-27)  
261 - $0.top.equalTo(enterChosenAuthenticatorLabel.snp.bottom).offset(23)  
262 - $0.height.equalTo(57)  
263 - }  
264 - phoneTextField.snp.makeConstraints {  
265 - $0.left.equalTo(logoImage.snp.left)  
266 - $0.right.equalTo(snp.right).offset(-27)  
267 - $0.top.equalTo(enterChosenAuthenticatorLabel.snp.bottom).offset(23)  
268 - $0.height.equalTo(57)  
269 - }  
270 - verificationDescriptionLabel.snp.makeConstraints {  
271 - $0.top.equalTo(emailTextField.snp.bottom).offset(8)  
272 - $0.left.equalTo(snp.left).offset(46)  
273 - $0.right.equalTo(snp.right).offset(-22)  
274 - }  
275 - continueButton.snp.makeConstraints {  
276 - $0.left.equalTo(snp.left)  
277 - $0.right.equalTo(snp.right)  
278 - $0.top.equalTo(emailTextField.snp.bottom).offset(90)  
279 - $0.height.equalTo(125)  
280 - }  
281 - continueLabel.snp.makeConstraints {  
282 - $0.left.equalTo(snp.left).offset(48)  
283 - $0.top.equalTo(continueButton.snp.top).offset(33)  
284 - }  
285 - pointerImage.snp.makeConstraints {  
286 - $0.top.equalTo(continueButton.snp.top).offset(31)  
287 - $0.right.equalTo(snp.right).offset(-51.5)  
288 - }  
289 - phonePickerView.snp.makeConstraints { make in  
290 - make.leading.trailing.equalToSuperview()  
291 - make.height.equalTo(390)  
292 - make.top.equalTo(self.snp.bottom)  
293 - }  
294 - showPickerButton.snp.makeConstraints {  
295 - $0.height.equalTo(22)  
296 - $0.width.equalTo(50)  
297 - $0.left.equalTo(emailTextField.snp.left).offset(22)  
298 - $0.top.equalTo(emailTextField.snp.top).offset(18)  
299 - }  
300 - flagPickerView.snp.makeConstraints {  
301 - $0.left.equalToSuperview()  
302 - $0.top.equalToSuperview()  
303 - $0.height.width.equalTo(20)  
304 - $0.centerY.equalTo(showPickerButton.snp.centerY)  
305 - }  
306 - flagPointerView.snp.makeConstraints {  
307 - $0.left.equalTo(flagPickerView.snp.right).offset(10)  
308 - $0.centerYWithinMargins.equalTo(flagPickerView.snp.centerYWithinMargins)  
309 - }  
310 - }  
311 -  
312 - @objc func choosePhoneCode() {  
313 - emailTextField.isHidden = true  
314 - phoneTextField.isHidden = false  
315 - phoneNumberButton.isSelected = true  
316 - emailButton.isSelected = true  
317 -// phoneNumberButton.setImage(UIImage(named: "OnIndicator"), for: .normal)  
318 -// emailButton.setImage(UIImage(named: "OffIndicator"), for: .normal)  
319 - phoneNumberButton.image(for: .normal)  
320 - verificationDescriptionLabel.text = "Verification code will be sent to\nyour phone number"  
321 - enterChosenAuthenticatorLabel.text = "Enter your phone number"  
322 - emailTextField.text = "+1"  
323 - showPickerButton.isHidden = false  
324 - emailTextField.keyboardType = .numberPad  
325 - }  
326 -  
327 - @objc func chooseEmail() {  
328 - emailTextField.isHidden = false  
329 - phoneTextField.isHidden = true  
330 - phoneNumberButton.isSelected = false  
331 - emailButton.isSelected = false  
332 - verificationDescriptionLabel.text = "Verification code will be sent to your e-mail"  
333 - enterChosenAuthenticatorLabel.text = "Enter your email address"  
334 - emailTextField.text = ""  
335 - emailTextField.placeholder = "Example: john.doe@gmail.com"  
336 - showPickerButton.isHidden = true  
337 - }  
338 -  
339 - func showPickerView() {  
340 - UIView.animate(withDuration: 0.3) {  
341 - self.phonePickerView.snp.updateConstraints { make in  
342 - make.top.equalTo(self.snp.bottom).offset(-390)  
343 -  
344 - }  
345 - self.layoutIfNeeded()  
346 - }  
347 -  
348 - }  
349 -  
350 - func hidePicerView() {  
351 - UIView.animate(withDuration: 0.3) {  
352 - self.phonePickerView.snp.updateConstraints { make in  
353 - make.top.equalTo(self.snp.bottom).offset(0)  
354 - }  
355 - self.layoutIfNeeded()  
356 - }  
357 - }  
358 -}  
Please register or login to post a comment