CircleLeavingMessageUserTableViewCell.swift 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. //
  2. // CircleLeavingMessageUserTableViewCell.swift
  3. // RainbowPlanet
  4. //
  5. // Created by 南鑫林 on 2019/10/16.
  6. // Copyright © 2019 RainbowPlanet. All rights reserved.
  7. //
  8. import UIKit
  9. import SwiftyMediator
  10. import RxSwift
  11. class CircleLeavingMessageUserTableViewCell: UITableViewCell {
  12. let disposeBag = DisposeBag()
  13. typealias DeleteClosure = (_ y:CGFloat) -> Void
  14. var deleteClosure : DeleteClosure?
  15. class func cellWith(tableView:UITableView,indexPath:IndexPath) -> CircleLeavingMessageUserTableViewCell {
  16. let ID = "CircleLeavingMessageUserTableViewCell"
  17. tableView.register(CircleLeavingMessageUserTableViewCell.self, forCellReuseIdentifier: ID)
  18. let cell : CircleLeavingMessageUserTableViewCell = tableView.dequeueReusableCell(withIdentifier: ID, for: indexPath) as! CircleLeavingMessageUserTableViewCell
  19. cell.indexPath = indexPath
  20. return cell
  21. }
  22. override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
  23. super.init(style: style, reuseIdentifier: reuseIdentifier)
  24. setupViews()
  25. setupLayouts()
  26. setupData()
  27. }
  28. required init?(coder aDecoder: NSCoder) {
  29. fatalError("init(coder:) has not been implemented")
  30. }
  31. var indexPath: IndexPath? {
  32. didSet {
  33. }
  34. }
  35. //MRAK: - 设置View
  36. private func setupViews() {
  37. self.selectionStyle = .none
  38. backgroundColor = kf7f8faColor
  39. addSubview(avatarButton)
  40. addSubview(titleButton)
  41. addSubview(timeLabel)
  42. addSubview(setButton)
  43. }
  44. private func setupLayouts() {
  45. avatarButton.snp.makeConstraints { (make) in
  46. make.centerY.equalToSuperview()
  47. make.size.equalTo(40)
  48. make.left.equalTo(14)
  49. }
  50. titleButton.snp.makeConstraints { (make) in
  51. make.top.equalTo(avatarButton).offset(2)
  52. make.height.equalTo(21)
  53. make.left.equalTo(avatarButton.snp.right).offset(16)
  54. make.right.lessThanOrEqualTo(setButton.snp.left).offset(-80-46-5)
  55. }
  56. timeLabel.snp.makeConstraints { (make) in
  57. make.bottom.equalTo(avatarButton).offset(4)
  58. make.left.equalTo(titleButton)
  59. }
  60. setButton.snp.makeConstraints { (make) in
  61. make.centerY.equalToSuperview()
  62. make.size.equalTo(22)
  63. make.right.equalTo(-14)
  64. }
  65. }
  66. func setupData() {
  67. avatarButton.rx.tap.subscribe(onNext: {
  68. [weak self] (data) in
  69. self?.pushUser()
  70. }).disposed(by: disposeBag)
  71. titleButton.rx.tap.subscribe(onNext: {
  72. [weak self] (data) in
  73. self?.pushUser()
  74. }).disposed(by: disposeBag)
  75. setButton.rx.tap.subscribe(onNext: {[weak self] (data) in
  76. let window = kAppDelegate.window
  77. let rect = self?.setButton.convert((self?.setButton.bounds)!, from: window)
  78. let y = CGFloat(abs((rect?.origin.y)!))
  79. if let deleteClosure = self?.deleteClosure {
  80. deleteClosure(y)
  81. }
  82. }).disposed(by: disposeBag)
  83. }
  84. private lazy var avatarButton: UIButton = {
  85. let avatarButton = UIButton(type: UIButton.ButtonType.custom)
  86. avatarButton.setImage(kImage(name: "default_pic"), for: UIControl.State.normal)
  87. avatarButton.imageView?.contentMode = .scaleAspectFill
  88. avatarButton.cornerRadius = 20
  89. avatarButton.masksToBounds = true
  90. return avatarButton
  91. }()
  92. private lazy var titleButton: UIButton = {
  93. let titleButton = UIButton(type: UIButton.ButtonType.custom)
  94. titleButton.setTitle("用户昵称", for: UIControl.State.normal)
  95. titleButton.setTitleColor(k333333Color, for: UIControl.State.normal)
  96. titleButton.titleLabel?.font = kMediumFont14
  97. titleButton.titleLabel?.lineBreakMode = NSLineBreakMode.byTruncatingTail
  98. titleButton.titleLabel?.textAlignment = .left
  99. titleButton.contentHorizontalAlignment = .left
  100. return titleButton
  101. }()
  102. private lazy var timeLabel: UILabel = {
  103. let timeLabel = UILabel()
  104. timeLabel.text = "5小时前"
  105. timeLabel.textColor = kbbbbbbColor
  106. timeLabel.font = kRegularFont12
  107. return timeLabel
  108. }()
  109. private lazy var setButton: UIButton = {
  110. let setButton = UIButton(type: UIButton.ButtonType.custom)
  111. setButton.setImage(kImage(name: "btn_more"), for: UIControl.State.normal)
  112. setButton.titleLabel?.font = kMediumFont13
  113. return setButton
  114. }()
  115. var communityCircleMessageModel: CommunityCircleMessageModel? {
  116. didSet {
  117. avatarButton.kf.setImage(with: kURLImage(name: communityCircleMessageModel?.user?.avatar ?? ""), for: UIControl.State.normal , placeholder: kImage(name: "default_avatar"))
  118. titleButton.setTitle(communityCircleMessageModel?.user?.username, for: UIControl.State.normal)
  119. timeLabel.text = communityCircleMessageModel?.createdAt
  120. if communityCircleMessageModel?.user?.uid == UserModel.shared().getModel()?.uid {
  121. setButton.isHidden = false
  122. }else {
  123. setButton.isHidden = true
  124. }
  125. }
  126. }
  127. func pushUser() {
  128. if communityCircleMessageModel?.user?.uid != UserModel.shared().getModel()?.uid {
  129. Mediator.push(MineRouterModuleType.pushOtherPersonalCenter(uid: communityCircleMessageModel?.user?.uid ?? 0))
  130. }
  131. }
  132. }