JCRegisterInfoViewController.swift 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  1. //
  2. // JCRegisterInfoViewController.swift
  3. // JChat
  4. //
  5. // Created by deng on 2017/5/12.
  6. // Copyright © 2017年 HXHG. All rights reserved.
  7. //
  8. import UIKit
  9. import JMessage
  10. class JCRegisterInfoViewController: UIViewController {
  11. var username: String!
  12. var password: String!
  13. //MARK: - life cycle
  14. override func viewDidLoad() {
  15. super.viewDidLoad()
  16. _init()
  17. }
  18. override func viewWillAppear(_ animated: Bool) {
  19. super.viewWillAppear(animated)
  20. UIApplication.shared.setStatusBarStyle(.lightContent, animated: false)
  21. self.navigationController?.setNavigationBarHidden(false, animated: false)
  22. }
  23. private lazy var nicknameTextField: UITextField = {
  24. var textField = UITextField()
  25. textField.addTarget(self, action: #selector(textFieldDidChanged(_ :)), for: .editingChanged)
  26. textField.clearButtonMode = .whileEditing
  27. textField.placeholder = "请输入昵称"
  28. textField.font = UIFont.systemFont(ofSize: 16)
  29. textField.frame = CGRect(x: 38 + 40 + 15, y: 64 + 40 + 80 + 40, width: self.view.width - 76 - 38, height: 40)
  30. return textField
  31. }()
  32. fileprivate lazy var avatorView: UIImageView = {
  33. var avatorView = UIImageView()
  34. avatorView.isUserInteractionEnabled = true
  35. avatorView.frame = CGRect(x: self.view.centerX - 40, y: 64 + 40, width: 80, height: 80)
  36. avatorView.image = UIImage.loadImage("com_icon_upload")
  37. let tapGR = UITapGestureRecognizer(target: self, action: #selector(_tapHandler))
  38. avatorView.addGestureRecognizer(tapGR)
  39. return avatorView
  40. }()
  41. private lazy var registerButton: UIButton = {
  42. var button = UIButton()
  43. button.backgroundColor = UIColor(netHex: 0x2DD0CF)
  44. // button.frame = CGRect(x: 38, y: 64 + 40 + 80 + 40 + 40 + 38, width: self.view.width - 76, height: 40)
  45. let y = 64 + 40 + 80 + 40 + 40 + 38
  46. button.frame = CGRect(x: 38, y: y, width: Int(self.view.width - 76), height: 40)
  47. button.setTitle("完成", for: .normal)
  48. button.layer.cornerRadius = 3.0
  49. button.layer.masksToBounds = true
  50. button.addTarget(self, action: #selector(_userRegister), for: .touchUpInside)
  51. return button
  52. }()
  53. fileprivate lazy var tipsLabel: UILabel = {
  54. let tipsLabel = UILabel()
  55. tipsLabel.frame = CGRect(x: 38, y: 64 + 40 + 80 + 40 + 11 , width: 40, height: 18)
  56. tipsLabel.text = "昵称"
  57. tipsLabel.font = UIFont.systemFont(ofSize: 16)
  58. tipsLabel.textColor = UIColor(netHex: 0x999999)
  59. return tipsLabel
  60. }()
  61. fileprivate lazy var usernameLine: UILabel = {
  62. var line = UILabel()
  63. line.backgroundColor = UIColor(netHex: 0xD2D2D2)
  64. line.alpha = 0.4
  65. line.frame = CGRect(x: 38, y: self.nicknameTextField.y + 40, width: self.view.width - 76, height: 2)
  66. return line
  67. }()
  68. fileprivate lazy var imagePicker: UIImagePickerController = {
  69. var picker = UIImagePickerController()
  70. picker.sourceType = .camera
  71. picker.cameraCaptureMode = .photo
  72. picker.delegate = self
  73. return picker
  74. }()
  75. fileprivate var image: UIImage?
  76. //MARK: - private func
  77. private func _init() {
  78. self.title = "补充信息"
  79. view.backgroundColor = .white
  80. navigationController?.setNavigationBarHidden(false, animated: false)
  81. navigationController?.interactivePopGestureRecognizer?.isEnabled = true
  82. nicknameTextField.addTarget(self, action: #selector(textFieldDidChanged(_ :)), for: .editingChanged)
  83. view.addSubview(avatorView)
  84. view.addSubview(nicknameTextField)
  85. view.addSubview(registerButton)
  86. view.addSubview(tipsLabel)
  87. view.addSubview(usernameLine)
  88. let tap = UITapGestureRecognizer(target: self, action: #selector(_tapView))
  89. view.addGestureRecognizer(tap)
  90. }
  91. func textFieldDidChanged(_ textField: UITextField) {
  92. if textField.markedTextRange == nil {
  93. let text = textField.text!
  94. if text.count > 30 {
  95. let range = (text.startIndex ..< text.index(text.startIndex, offsetBy: 30))
  96. let subText = text.substring(with: range)
  97. textField.text = subText
  98. }
  99. }
  100. }
  101. func _tapView() {
  102. view.endEditing(true)
  103. }
  104. func _tapHandler() {
  105. view.endEditing(true)
  106. let actionSheet = UIActionSheet(title: nil, delegate: self, cancelButtonTitle: "取消", destructiveButtonTitle: nil, otherButtonTitles: " 从相册中选择", "拍照")
  107. actionSheet.tag = 1001
  108. actionSheet.show(in: self.view)
  109. }
  110. //MARK: - click event
  111. func _userRegister() {
  112. MBProgressHUD_JChat.showMessage(message: "保存中", toView: self.view)
  113. userLogin(withUsername: self.username, password: self.password)
  114. }
  115. private func userLogin(withUsername: String, password: String) {
  116. JMSGUser.login(withUsername: self.username, password: self.password) { (result, error) in
  117. MBProgressHUD_JChat.hide(forView: self.view, animated: true)
  118. if error == nil {
  119. self.setupNickname()
  120. self.uploadImage()
  121. UserDefaults.standard.set(self.username, forKey: kLastUserName)
  122. UserDefaults.standard.set(self.username, forKey: kCurrentUserName)
  123. let appDelegate = UIApplication.shared.delegate
  124. let window = appDelegate?.window!
  125. window?.rootViewController = JCMainTabBarController()
  126. } else {
  127. MBProgressHUD_JChat.show(text: "登录失败", view: self.view)
  128. }
  129. }
  130. }
  131. private func setupNickname() {
  132. JMSGUser.updateMyInfo(withParameter: self.nicknameTextField.text!, userFieldType: .fieldsNickname) { (resultObject, error) -> Void in
  133. if error == nil {
  134. NotificationCenter.default.post(name: Notification.Name(rawValue: kUpdateUserInfo), object: nil)
  135. } else {
  136. print("error:\(String(describing: error?.localizedDescription))")
  137. }
  138. }
  139. }
  140. private func uploadImage() {
  141. if let image = image {
  142. let imageData = image.jpegData(compressionQuality: 0.8)
  143. JMSGUser.updateMyInfo(withParameter: imageData!, userFieldType: .fieldsAvatar, completionHandler: { (result, error) in
  144. if error == nil {
  145. let avatorData = NSKeyedArchiver.archivedData(withRootObject: imageData!)
  146. UserDefaults.standard.set(avatorData, forKey: kLastUserAvator)
  147. NotificationCenter.default.post(name: Notification.Name(rawValue: kUpdateUserInfo), object: nil)
  148. }
  149. })
  150. } else {
  151. UserDefaults.standard.removeObject(forKey: kLastUserAvator)
  152. }
  153. }
  154. }
  155. extension JCRegisterInfoViewController: UIActionSheetDelegate {
  156. func actionSheet(_ actionSheet: UIActionSheet, clickedButtonAt buttonIndex: Int) {
  157. switch buttonIndex {
  158. case 1:
  159. // 从相册中选择
  160. let picker = UIImagePickerController()
  161. picker.delegate = self
  162. picker.sourceType = .photoLibrary
  163. let temp_mediaType = UIImagePickerController.availableMediaTypes(for: picker.sourceType)
  164. picker.mediaTypes = temp_mediaType!
  165. picker.modalTransitionStyle = .coverVertical
  166. self.present(picker, animated: true, completion: nil)
  167. case 2:
  168. // 拍照
  169. present(imagePicker, animated: true, completion: nil)
  170. default:
  171. break
  172. }
  173. }
  174. }
  175. extension JCRegisterInfoViewController: UINavigationControllerDelegate, UIImagePickerControllerDelegate {
  176. // MARK: - UIImagePickerControllerDelegate
  177. func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
  178. picker.dismiss(animated: true, completion: nil)
  179. }
  180. func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
  181. var image = info[UIImagePickerController.InfoKey.originalImage] as! UIImage?
  182. image = image?.fixOrientation()
  183. self.image = image
  184. avatorView.image = image
  185. picker.dismiss(animated: true, completion: nil)
  186. }
  187. }