JCSignatureViewController.swift 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. //
  2. // JCSignatureViewController.swift
  3. // JChat
  4. //
  5. // Created by deng on 2017/3/29.
  6. // Copyright © 2017年 HXHG. All rights reserved.
  7. //
  8. import UIKit
  9. import JMessage
  10. class JCSignatureViewController: UIViewController {
  11. var signature: String!
  12. override func viewDidLoad() {
  13. super.viewDidLoad()
  14. _init()
  15. signatureTextView.text = signature
  16. var count = 30 - signature.count
  17. count = count < 0 ? 0 : count
  18. tipLabel.text = "\(count)"
  19. }
  20. private var topOffset: CGFloat {
  21. if isIPhoneX {
  22. return 88
  23. }
  24. return 64
  25. }
  26. private lazy var saveButton: UIButton = {
  27. var saveButton = UIButton()
  28. saveButton.setTitle("提交", for: .normal)
  29. let colorImage = UIImage.createImage(color: UIColor(netHex: 0x2dd0cf), size: CGSize(width: self.view.width - 30, height: 40))
  30. saveButton.setBackgroundImage(colorImage, for: .normal)
  31. saveButton.addTarget(self, action: #selector(_saveSignature), for: .touchUpInside)
  32. return saveButton
  33. }()
  34. private lazy var bgView: UIView = {
  35. let bgView = UIView(frame: CGRect(x: 0, y: self.topOffset, width: self.view.width, height: 120))
  36. bgView.backgroundColor = .white
  37. return bgView
  38. }()
  39. private lazy var signatureTextView: UITextView = {
  40. let signatureTextView = UITextView(frame: CGRect(x: 15, y: 15, width: self.view.width - 30, height: 90))
  41. signatureTextView.delegate = self
  42. signatureTextView.font = UIFont.systemFont(ofSize: 16)
  43. signatureTextView.backgroundColor = .white
  44. return signatureTextView
  45. }()
  46. fileprivate lazy var tipLabel: UILabel = {
  47. let tipLabel = UILabel(frame: CGRect(x: self.bgView.width - 15 - 50, y: self.bgView.height - 24, width: 50, height: 12))
  48. tipLabel.textColor = UIColor(netHex: 0x999999)
  49. tipLabel.font = UIFont.systemFont(ofSize: 12)
  50. tipLabel.textAlignment = .right
  51. return tipLabel
  52. }()
  53. private lazy var navRightButton: UIBarButtonItem = UIBarButtonItem(title: "保存", style: .plain, target: self, action: #selector(_saveSignature))
  54. //MARK: - private func
  55. private func _init() {
  56. self.title = "个性签名"
  57. automaticallyAdjustsScrollViewInsets = false;
  58. view.backgroundColor = UIColor(netHex: 0xe8edf3)
  59. view.addSubview(saveButton)
  60. view.addSubview(bgView)
  61. bgView.addSubview(signatureTextView)
  62. bgView.addSubview(tipLabel)
  63. view.addConstraint(_JCLayoutConstraintMake(saveButton, .left, .equal, view, .left, 15))
  64. view.addConstraint(_JCLayoutConstraintMake(saveButton, .right, .equal, view, .right, -15))
  65. view.addConstraint(_JCLayoutConstraintMake(saveButton, .top, .equal, bgView, .bottom, 15))
  66. view.addConstraint(_JCLayoutConstraintMake(saveButton, .height, .equal, nil, .notAnAttribute, 40))
  67. _setupNavigation()
  68. }
  69. private func _setupNavigation() {
  70. navigationItem.rightBarButtonItem = navRightButton
  71. }
  72. //MARK: - click func
  73. func _saveSignature() {
  74. signatureTextView.resignFirstResponder()
  75. JMSGUser.updateMyInfo(withParameter: signatureTextView.text!, userFieldType: .fieldsSignature) { (resultObject, error) -> Void in
  76. if error == nil {
  77. NotificationCenter.default.post(name: Notification.Name(rawValue: kUpdateUserInfo), object: nil)
  78. self.navigationController?.popViewController(animated: true)
  79. } else {
  80. print("error:\(String(describing: error?.localizedDescription))")
  81. }
  82. }
  83. }
  84. }
  85. extension JCSignatureViewController: UITextViewDelegate {
  86. func textViewDidChange(_ textView: UITextView) {
  87. if textView.markedTextRange == nil {
  88. let text = textView.text!
  89. if text.count > 30 {
  90. let range = (text.startIndex ..< text.index(text.startIndex, offsetBy: 30))
  91. let subText = text.substring(with: range)
  92. textView.text = subText
  93. }
  94. let count = 30 - (textView.text?.count)!
  95. tipLabel.text = "\(count)"
  96. }
  97. }
  98. }