JCRegisterViewController.swift 10.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
  1. //
  2. // JCRegisterViewController.swift
  3. // JChat
  4. //
  5. // Created by deng on 2017/2/16.
  6. // Copyright © 2017年 HXHG. All rights reserved.
  7. //
  8. import UIKit
  9. class JCRegisterViewController: UIViewController {
  10. //MARK: - life cycle
  11. override func viewDidLoad() {
  12. super.viewDidLoad()
  13. _init()
  14. }
  15. override func viewWillAppear(_ animated: Bool) {
  16. super.viewWillAppear(animated)
  17. UIApplication.shared.setStatusBarStyle(.default, animated: false)
  18. navigationController?.setNavigationBarHidden(true, animated: false)
  19. _updateRegisterButton()
  20. }
  21. //MARK: - property
  22. fileprivate lazy var headerView: UIView = {
  23. let view = UIView(frame: CGRect(x: 0, y: -64, width: self.view.width, height: 64))
  24. view.backgroundColor = UIColor(netHex: 0x2DD0CF)
  25. let title = UILabel(frame: CGRect(x: self.view.centerX - 10, y: 20, width: 200, height: 44))
  26. title.font = UIFont.systemFont(ofSize: 18)
  27. title.textColor = .white
  28. title.text = "JChat"
  29. view.addSubview(title)
  30. var rightButton = UIButton(frame: CGRect(x: view.width - 50 - 15, y: 20 + 7, width: 50, height: 30))
  31. rightButton.setTitle("去登录", for: .normal)
  32. rightButton.titleLabel?.font = UIFont.systemFont(ofSize: 16)
  33. rightButton.addTarget(self, action: #selector(_clickLoginButton), for: .touchUpInside)
  34. view.addSubview(rightButton)
  35. return view
  36. }()
  37. private lazy var passwordTextField: UITextField = {
  38. var textField = UITextField()
  39. textField.addTarget(self, action: #selector(textFieldDidChanged(_ :)), for: .editingChanged)
  40. textField.clearButtonMode = .whileEditing
  41. textField.tag = 1002
  42. textField.delegate = self
  43. textField.placeholder = "请输入密码"
  44. textField.isSecureTextEntry = true
  45. textField.font = UIFont.systemFont(ofSize: 16)
  46. let x = 38 + 18 + 15
  47. let y = 108 + 80 + 60 + 27 + 30
  48. let w = Int(self.view.width - 76 - 33)
  49. let h = 40
  50. textField.frame = CGRect(x: x, y: x, width: w, height: h)
  51. return textField
  52. }()
  53. private lazy var userNameTextField: UITextField = {
  54. var textField = UITextField()
  55. textField.addTarget(self, action: #selector(textFieldDidChanged(_ :)), for: .editingChanged)
  56. textField.clearButtonMode = .whileEditing
  57. textField.tag = 1001
  58. textField.delegate = self
  59. textField.placeholder = "请输入用户名"
  60. textField.font = UIFont.systemFont(ofSize: 16)
  61. textField.frame = CGRect(x: 38 + 18 + 15, y: 108 + 80 + 60, width: self.view.width - 76 - 33, height: 40)
  62. return textField
  63. }()
  64. fileprivate lazy var avatorView: UIImageView = {
  65. var avatorView = UIImageView()
  66. avatorView.frame = CGRect(x: self.view.centerX - 40, y: 108, width: 80, height: 80)
  67. avatorView.image = UIImage.loadImage("com_icon_80")
  68. return avatorView
  69. }()
  70. private lazy var loginButton: UIButton = {
  71. var button = UIButton()
  72. button.frame = CGRect(x: self.view.centerX + 12, y: self.view.height - 42, width: 50, height: 16.5)
  73. button.setTitle("立即登录", for: .normal)
  74. button.titleLabel?.font = UIFont.systemFont(ofSize: 12)
  75. button.setTitleColor(UIColor(netHex: 0x2DD0CF), for: .normal)
  76. button.addTarget(self, action: #selector(_clickLoginButton), for: .touchUpInside)
  77. return button
  78. }()
  79. private lazy var registerButton: UIButton = {
  80. var button = UIButton()
  81. button.backgroundColor = UIColor(netHex: 0x2DD0CF)
  82. button.frame = CGRect(x: 38, y: 108 + 185 + 80, width: self.view.width - 76, height: 40)
  83. button.setTitle("注册", for: .normal)
  84. button.layer.cornerRadius = 3.0
  85. button.layer.masksToBounds = true
  86. button.addTarget(self, action: #selector(_userRegister), for: .touchUpInside)
  87. return button
  88. }()
  89. private lazy var tipsLabel: UILabel = {
  90. var label = UILabel()
  91. label.frame = CGRect(x: self.view.centerX - 62, y: self.view.height - 42, width: 74, height: 16.5)
  92. label.text = "已注册账号?"
  93. label.textColor = UIColor(netHex: 0x999999)
  94. label.font = UIFont.systemFont(ofSize: 12)
  95. return label
  96. }()
  97. fileprivate lazy var passwordIcon: UIImageView = {
  98. let imageView = UIImageView()
  99. imageView.frame = CGRect(x: 38, y: 108 + 80 + 60 + 27 + 30 + 11 , width: 18, height: 18)
  100. imageView.image = UIImage.loadImage("com_icon_password")
  101. return imageView
  102. }()
  103. fileprivate lazy var usernameIcon: UIImageView = {
  104. let imageView = UIImageView()
  105. imageView.frame = CGRect(x: 38, y: 108 + 80 + 60 + 11 , width: 18, height: 18)
  106. imageView.image = UIImage.loadImage("com_icon_user_18")
  107. return imageView
  108. }()
  109. fileprivate lazy var usernameLine: UILabel = {
  110. var line = UILabel()
  111. line.backgroundColor = UIColor(netHex: 0x2DD0CF)
  112. line.alpha = 0.4
  113. line.frame = CGRect(x: 38, y: self.userNameTextField.y + 40, width: self.view.width - 76, height: 1)
  114. return line
  115. }()
  116. fileprivate lazy var passwordLine: UILabel = {
  117. var line = UILabel()
  118. line.backgroundColor = UIColor(netHex: 0x2DD0CF)
  119. line.alpha = 0.4
  120. line.frame = CGRect(x: 38, y: self.passwordTextField.y + 40, width: self.view.width - 76, height: 1)
  121. return line
  122. }()
  123. fileprivate lazy var bgView: UIView = UIView(frame: self.view.frame)
  124. //MARK: - private mothed
  125. private func _init() {
  126. self.title = "JChat"
  127. view.backgroundColor = .white
  128. automaticallyAdjustsScrollViewInsets = false
  129. view.addSubview(bgView)
  130. view.addSubview(headerView)
  131. bgView.addSubview(avatorView)
  132. bgView.addSubview(tipsLabel)
  133. bgView.addSubview(userNameTextField)
  134. bgView.addSubview(passwordTextField)
  135. bgView.addSubview(loginButton)
  136. bgView.addSubview(registerButton)
  137. bgView.addSubview(usernameIcon)
  138. bgView.addSubview(passwordIcon)
  139. bgView.addSubview(usernameLine)
  140. bgView.addSubview(passwordLine)
  141. let tap = UITapGestureRecognizer(target: self, action: #selector(_tapView))
  142. bgView.addGestureRecognizer(tap)
  143. }
  144. @objc func textFieldDidChanged(_ textField: UITextField) {
  145. _updateRegisterButton()
  146. }
  147. @objc func _tapView() {
  148. view.endEditing(true)
  149. }
  150. //MARK: - click event
  151. @objc func _userRegister() {
  152. userNameTextField.resignFirstResponder()
  153. passwordTextField.resignFirstResponder()
  154. let username = userNameTextField.text ?? ""
  155. let password = passwordTextField.text ?? ""
  156. let validateUsername = UserDefaultValidationService.sharedValidationService.validateUsername(username)
  157. if !(validateUsername == .ok) {
  158. MBProgressHUD_JChat.show(text: validateUsername.description, view: view)
  159. return
  160. }
  161. let validatePassword = UserDefaultValidationService.sharedValidationService.validatePassword(password)
  162. if !(validatePassword == .ok) {
  163. MBProgressHUD_JChat.show(text: validatePassword.description, view: view)
  164. return
  165. }
  166. MBProgressHUD_JChat.showMessage(message: "注册中", toView: view)
  167. JMSGUser.register(withUsername: username, password: password) { (result, error) in
  168. let _ = DispatchQueue.main.async {
  169. MBProgressHUD_JChat.hide(forView: self.view, animated: true)
  170. if error == nil {
  171. let vc = JCRegisterInfoViewController()
  172. vc.username = username
  173. vc.password = password
  174. self.navigationController?.pushViewController(vc, animated: true)
  175. } else {
  176. MBProgressHUD_JChat.show(text: String.errorAlert(error! as NSError), view: self.view)
  177. }
  178. }
  179. }
  180. }
  181. @objc func _clickLoginButton() {
  182. navigationController?.popViewController(animated: true)
  183. }
  184. @objc func _updateRegisterButton() {
  185. if (userNameTextField.text?.isEmpty)! || (passwordTextField.text?.isEmpty)! {
  186. registerButton.isEnabled = false
  187. registerButton.alpha = 0.7
  188. } else {
  189. registerButton.isEnabled = true
  190. registerButton.alpha = 1.0
  191. }
  192. }
  193. }
  194. extension JCRegisterViewController: UITextFieldDelegate {
  195. func textFieldDidBeginEditing(_ textField: UITextField) {
  196. _updateRegisterButton()
  197. if textField.tag == 1001 {
  198. usernameLine.alpha = 1.0
  199. usernameIcon.image = UIImage.loadImage("com_icon_user_18_pre")
  200. } else {
  201. passwordLine.alpha = 1.0
  202. passwordIcon.image = UIImage.loadImage("com_icon_password_pre")
  203. }
  204. UIApplication.shared.setStatusBarStyle(.lightContent, animated: false)
  205. UIView.animate(withDuration: 0.3, animations: {
  206. self.avatorView.isHidden = true
  207. self.headerView.frame = CGRect(x: 0, y: 0, width: self.view.width, height: 64)
  208. self.bgView.frame = CGRect(x: 0, y: -100, width: self.view.width, height: self.view.height)
  209. })
  210. }
  211. func textFieldDidEndEditing(_ textField: UITextField) {
  212. _updateRegisterButton()
  213. if textField.tag == 1001 {
  214. usernameLine.alpha = 0.4
  215. usernameIcon.image = UIImage.loadImage("com_icon_user_18")
  216. } else {
  217. passwordLine.alpha = 0.4
  218. passwordIcon.image = UIImage.loadImage("com_icon_password")
  219. }
  220. UIApplication.shared.setStatusBarStyle(.default, animated: false)
  221. UIView.animate(withDuration: 0.3) {
  222. self.avatorView.isHidden = false
  223. self.headerView.frame = CGRect(x: 0, y: -64, width: self.view.width, height: 64)
  224. self.bgView.frame = CGRect(x: 0, y: 0, width: self.view.width, height: self.view.height)
  225. }
  226. }
  227. }