MessageListTableCell.swift 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242
  1. //
  2. // MessageCommentTableCell.swift
  3. // RainbowPlanet
  4. //
  5. // Created by Christopher on 2019/6/11.
  6. // Copyright © 2019 RainbowPlanet. All rights reserved.
  7. //
  8. import UIKit
  9. class MessageListTableCell: UITableViewCell {
  10. class func cellWith(tableView:UITableView,indexPath:IndexPath) -> MessageListTableCell {
  11. let ID = "MessageListTableCell"
  12. tableView.register(MessageListTableCell.self, forCellReuseIdentifier: ID)
  13. let cell : MessageListTableCell = tableView.dequeueReusableCell(withIdentifier: ID, for: indexPath) as! MessageListTableCell
  14. cell.indexPath = indexPath
  15. return cell
  16. }
  17. override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
  18. super.init(style: style, reuseIdentifier: reuseIdentifier)
  19. setupViews()
  20. setupLayouts()
  21. }
  22. required init?(coder aDecoder: NSCoder) {
  23. fatalError("init(coder:) has not been implemented")
  24. }
  25. var indexPath: IndexPath? {
  26. didSet {
  27. }
  28. }
  29. //MRAK: - 设置View
  30. private func setupViews() {
  31. self.selectionStyle = .none
  32. backgroundColor = kffffffColor
  33. addSubview(typeImageView)
  34. addSubview(contentImageView)
  35. addSubview(titleLabel)
  36. addSubview(contentLabel)
  37. addSubview(timeLabel)
  38. addSubview(sepView)
  39. }
  40. private func setupLayouts() {
  41. typeImageView.snp.makeConstraints { (make) in
  42. make.top.equalTo(16)
  43. make.left.equalTo(14)
  44. make.size.equalTo(24)
  45. }
  46. contentImageView.snp.makeConstraints { (make) in
  47. make.top.equalTo(16)
  48. make.right.equalTo(-14)
  49. make.size.equalTo(60)
  50. }
  51. titleLabel.snp.makeConstraints { (make) in
  52. make.top.equalTo(16)
  53. make.left.equalTo(typeImageView.snp_right).offset(16)
  54. make.right.equalTo(contentImageView.snp_left).offset(-16)
  55. make.height.greaterThanOrEqualTo(20)
  56. }
  57. contentLabel.snp.makeConstraints { (make) in
  58. make.top.equalTo(titleLabel.snp_bottom).offset(8)
  59. make.left.equalTo(titleLabel.snp_left)
  60. make.right.equalTo(titleLabel.snp_right)
  61. }
  62. timeLabel.snp.makeConstraints { (make) in
  63. make.top.equalTo(contentLabel.snp_bottom).offset(8)
  64. make.left.equalTo(titleLabel.snp_left)
  65. make.height.equalTo(17)
  66. }
  67. sepView.snp.makeConstraints { (make) in
  68. make.top.equalTo(timeLabel.snp_bottom).offset(16)
  69. make.right.equalToSuperview()
  70. make.left.equalToSuperview().offset(54)
  71. make.height.equalTo(1)
  72. make.bottom.equalToSuperview()
  73. }
  74. }
  75. lazy var typeImageView : UIImageView = {
  76. let typeImageView = UIImageView()
  77. typeImageView.contentMode = .scaleAspectFill
  78. return typeImageView
  79. }()
  80. private lazy var titleLabel: FMLinkLabel = {
  81. let titleLabel = FMLinkLabel()
  82. titleLabel.numberOfLines = 0
  83. titleLabel.textColor = k999999Color
  84. titleLabel.font = kBoldFont14
  85. return titleLabel
  86. }()
  87. private lazy var contentLabel: UILabel = {
  88. let contentLabel = UILabel()
  89. contentLabel.text = "”大师果然厉害,不愧是牛逼之人“"
  90. contentLabel.textColor = k999999Color
  91. contentLabel.font = kRegularFont13
  92. contentLabel.textAlignment = .left
  93. contentLabel.numberOfLines = 0
  94. return contentLabel
  95. }()
  96. private lazy var timeLabel: UILabel = {
  97. let timeLabel = UILabel()
  98. timeLabel.textColor = kbbbbbbColor
  99. timeLabel.font = kRegularFont12
  100. timeLabel.textAlignment = .left
  101. return timeLabel
  102. }()
  103. lazy var contentImageView : UIImageView = {
  104. let contentImageView = UIImageView()
  105. contentImageView.image = kImage(name: "default_pic")
  106. contentImageView.cornerRadius = 4
  107. contentImageView.masksToBounds = true
  108. contentImageView.contentMode = .scaleAspectFill
  109. return contentImageView
  110. }()
  111. private lazy var sepView: UIView = {
  112. let sepView = UIView()
  113. sepView.backgroundColor = kf5f5f5Color
  114. return sepView
  115. }()
  116. var messageDataModel : MessageDataModel? {
  117. didSet {
  118. //6评论消息
  119. if MessageShowType.postComment == MessageShowType(rawValue: messageDataModel?.messageShowType ?? 6) {
  120. typeImageView.image = kImage(name: "news_comment")
  121. setTitleLabel(oneStr: (messageDataModel?.param?.userName ?? ""), twoStr: " 评论了 ", Three: "你的作品")
  122. contentLabel.text = "“\(messageDataModel?.param?.content ?? "")”"
  123. contentImageViewConstraint(size: 60, cornerRadius: 4)
  124. }
  125. //7回复消息
  126. if MessageShowType.postReply == MessageShowType(rawValue: messageDataModel?.messageShowType ?? 7) {
  127. typeImageView.image = kImage(name: "news_comment")
  128. setTitleLabel(oneStr: (messageDataModel?.param?.userName ?? ""), twoStr: " 回复了 ", Three: "你的评论")
  129. contentLabel.text = "“\(messageDataModel?.param?.content ?? "")”"
  130. contentImageViewConstraint(size: 60, cornerRadius: 4)
  131. }
  132. //8回复@ 消息;
  133. if MessageShowType.postReplyMain == MessageShowType(rawValue: messageDataModel?.messageShowType ?? 8) {
  134. typeImageView.image = kImage(name: "news_@")
  135. setTitleLabel(oneStr: (messageDataModel?.param?.userName ?? ""), twoStr: " @你 ", Three: "在评论中")
  136. contentLabel.text = "“\(messageDataModel?.param?.content ?? "")”"
  137. contentImageViewConstraint(size: 60, cornerRadius: 4)
  138. }
  139. //9攒内容消息
  140. if MessageShowType.postLike == MessageShowType(rawValue: messageDataModel?.messageShowType ?? 9) {
  141. typeImageView.image = kImage(name: "star_detail_like")
  142. setTitleLabel(oneStr: (messageDataModel?.param?.userName ?? ""), twoStr: " 赞了 ", Three: "你的内容")
  143. contentLabel.text = "\(messageDataModel?.param?.content ?? "")"
  144. contentImageViewConstraint(size: 60, cornerRadius: 4)
  145. }
  146. //10收藏内容消息
  147. if MessageShowType.postCollect == MessageShowType(rawValue: messageDataModel?.messageShowType ?? 10) {
  148. typeImageView.image = kImage(name: "star_detail_attention")
  149. setTitleLabel(oneStr: (messageDataModel?.param?.userName ?? ""), twoStr: " 收藏 ", Three: "你的内容")
  150. contentLabel.text = "\(messageDataModel?.param?.content ?? "")"
  151. contentImageViewConstraint(size: 60, cornerRadius: 4)
  152. }
  153. //11分享内容消息
  154. if MessageShowType.postShare == MessageShowType(rawValue: messageDataModel?.messageShowType ?? 10) {
  155. typeImageView.image = kImage(name: "star_detail_share")
  156. setTitleLabel(oneStr: (messageDataModel?.param?.userName ?? ""), twoStr: " 转发 ", Three: "你的内容")
  157. contentLabel.text = "\(messageDataModel?.param?.content ?? "")"
  158. contentImageViewConstraint(size: 60, cornerRadius: 4)
  159. }
  160. //12关注消息
  161. if MessageShowType.follow == MessageShowType(rawValue: messageDataModel?.messageShowType ?? 12) {
  162. typeImageView.image = kImage(name: "star_detail_read")
  163. setTitleLabel(oneStr: (messageDataModel?.param?.userName ?? ""), twoStr: " 关注了你", Three: "")
  164. contentLabel.text = "\(messageDataModel?.param?.content ?? "")"
  165. contentImageViewConstraint(size: 44, cornerRadius: 22)
  166. }
  167. timeLabel.text = messageDataModel?.createdAt
  168. contentImageView.kf.setImage(with: kURLThumbnailsImage(name: messageDataModel?.param?.cover ?? "", size: kSize44x44Image), placeholder: kImage(name: "default_pic"))
  169. }
  170. }
  171. typealias ClickTextBlock = () -> Void
  172. var clickTextBlock : ClickTextBlock?
  173. func setTitleLabel(oneStr:String,twoStr:String,Three:String) {
  174. self.titleLabel.text = oneStr + twoStr + Three
  175. if oneStr != "" {
  176. self.titleLabel.addClickText(oneStr, attributeds: [NSAttributedString.Key.foregroundColor:k333333Color], transmitBody: nil) {
  177. [weak self] (data) in
  178. if MessageShowType.follow == MessageShowType(rawValue: self?.messageDataModel?.messageShowType ?? 12) {
  179. if self?.messageDataModel?.param?.uid != UserModel.shared().getModel()?.uid {
  180. let vc = OtherPersonalCenterViewController()
  181. vc.uid = self?.messageDataModel?.param?.uid ?? 0
  182. self?.findViewController()?.navigationController?.pushViewController(vc, animated: true)
  183. }
  184. }
  185. }
  186. }
  187. if Three != "" {
  188. self.titleLabel.addClickText(Three, attributeds: [NSAttributedString.Key.foregroundColor:k333333Color], transmitBody: nil) { (data) in
  189. }
  190. }
  191. }
  192. /// 设置 内容图片
  193. func contentImageViewConstraint(size:CGFloat,cornerRadius:CGFloat) {
  194. contentImageView.snp.remakeConstraints { (make) in
  195. make.top.equalTo(16)
  196. make.right.equalTo(-14)
  197. make.size.equalTo(size)
  198. }
  199. contentImageView.cornerRadius = cornerRadius
  200. contentImageView.masksToBounds = true
  201. }
  202. }