CommunityFollowStatusTableViewCell.swift 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456
  1. //
  2. // CommunityFollowStatusTableViewCell.swift
  3. // RainbowPlanet
  4. //
  5. // Created by 南鑫林 on 2019/6/12.
  6. // Copyright © 2019 RainbowPlanet. All rights reserved.
  7. //
  8. import UIKit
  9. import RxSwift
  10. import Kingfisher
  11. class CommunityFollowStatusTableViewCell: UITableViewCell {
  12. let disposeBag = DisposeBag()
  13. typealias FollowClosure = () -> Void
  14. var followClosure : FollowClosure?
  15. class func cellWith(tableView:UITableView,indexPath:IndexPath) -> CommunityFollowStatusTableViewCell {
  16. let ID = "CommunityFollowStatusTableViewCell"
  17. tableView.register(CommunityFollowStatusTableViewCell.self, forCellReuseIdentifier: ID)
  18. let cell : CommunityFollowStatusTableViewCell = tableView.dequeueReusableCell(withIdentifier: ID, for: indexPath) as! CommunityFollowStatusTableViewCell
  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. }
  27. required init?(coder aDecoder: NSCoder) {
  28. fatalError("init(coder:) has not been implemented")
  29. }
  30. var indexPath: IndexPath? {
  31. didSet {
  32. }
  33. }
  34. //MRAK: - 设置View
  35. private func setupViews() {
  36. self.selectionStyle = .none
  37. addSubview(avatarButton)
  38. addSubview(titleButton)
  39. addSubview(timeStatusLabel)
  40. addSubview(oneCardView)
  41. oneCardView.addSubview(avatarOtherButton)
  42. oneCardView.addSubview(titleOtherButton)
  43. oneCardView.addSubview(followButton)
  44. addSubview(twoCardView)
  45. twoCardView.addSubview(twoTitleLabel)
  46. twoCardView.addSubview(twoSubtitleLabel)
  47. twoCardView.addSubview(twoGoImageView)
  48. addSubview(threeCardView)
  49. threeCardView.addSubview(threeTitleLabel)
  50. threeCardView.addSubview(threeGoImageView)
  51. addSubview(skittlesImageView)
  52. addSubview(skittlesTitleLabel)
  53. }
  54. private func setupLayouts() {
  55. avatarButton.snp_makeConstraints { (make) in
  56. make.top.equalTo(27)
  57. make.left.equalTo(14)
  58. make.size.equalTo(28)
  59. }
  60. titleButton.snp_makeConstraints { (make) in
  61. make.centerY.equalTo(avatarButton)
  62. make.left.equalTo(avatarButton.snp_right).offset(7)
  63. }
  64. timeStatusLabel.snp_makeConstraints { (make) in
  65. make.centerY.equalTo(titleButton)
  66. make.left.equalTo(titleButton.snp_right).offset(10)
  67. }
  68. oneCardView.snp_makeConstraints { (make) in
  69. make.top.equalTo(avatarButton.snp_bottom).offset(10)
  70. make.left.equalTo(14)
  71. make.right.equalTo(-14)
  72. make.height.equalTo(64)
  73. }
  74. avatarOtherButton.snp_makeConstraints { (make) in
  75. make.centerY.equalToSuperview()
  76. make.left.equalTo(15)
  77. make.size.equalTo(40)
  78. }
  79. titleOtherButton.snp_makeConstraints { (make) in
  80. make.centerY.equalTo(avatarOtherButton)
  81. make.left.equalTo(avatarOtherButton.snp_right).offset(16)
  82. make.right.equalTo(followButton.snp.left).offset(-5)
  83. }
  84. followButton.snp_makeConstraints { (make) in
  85. make.centerY.equalTo(avatarOtherButton)
  86. make.right.equalToSuperview().offset(-15)
  87. make.height.equalTo(28)
  88. make.width.equalTo(60)
  89. }
  90. twoCardView.snp_makeConstraints { (make) in
  91. make.top.equalTo(avatarButton.snp_bottom).offset(10)
  92. make.left.equalTo(14)
  93. make.right.equalTo(-14)
  94. make.height.equalTo(70)
  95. }
  96. twoTitleLabel.snp_makeConstraints { (make) in
  97. make.top.left.equalTo(15)
  98. make.right.equalTo(-45)
  99. make.height.equalTo(16)
  100. }
  101. twoSubtitleLabel.snp_makeConstraints { (make) in
  102. make.bottom.equalTo(-15)
  103. make.left.equalTo(15)
  104. make.right.equalTo(-37)
  105. make.height.equalTo(14)
  106. }
  107. twoGoImageView.snp_makeConstraints { (make) in
  108. make.centerY.equalToSuperview()
  109. make.right.equalTo(-15)
  110. }
  111. threeCardView.snp_makeConstraints { (make) in
  112. make.top.equalTo(avatarButton.snp_bottom).offset(10)
  113. make.left.equalTo(14)
  114. make.right.equalTo(-14)
  115. make.height.equalTo(60)
  116. }
  117. threeTitleLabel.snp_makeConstraints { (make) in
  118. make.centerY.equalToSuperview()
  119. make.left.equalTo(15)
  120. make.right.equalTo(-45)
  121. }
  122. threeGoImageView.snp_makeConstraints { (make) in
  123. make.centerY.equalToSuperview()
  124. make.right.equalTo(-15)
  125. }
  126. }
  127. private lazy var avatarButton: UIButton = {
  128. let avatarButton = UIButton(type: UIButton.ButtonType.custom)
  129. avatarButton.setImage(kImage(name: "default_avatar"), for: UIControl.State.normal)
  130. avatarButton.imageView?.contentMode = .scaleAspectFill
  131. avatarButton.imageView?.clipsToBounds = true
  132. avatarButton.cornerRadius = 14
  133. avatarButton.masksToBounds = true
  134. avatarButton.rx.tap.subscribe(onNext: { [weak self] (data) in
  135. NotificationCenter.default.post(name: NSNotification.Name(rawValue: "CommunityUser"), object: self?.communityFollowDataModel?.followUid)
  136. }).disposed(by: disposeBag)
  137. return avatarButton
  138. }()
  139. private lazy var titleButton: UIButton = {
  140. let titleButton = UIButton(type: UIButton.ButtonType.custom)
  141. titleButton.setTitle("用户昵称", for: UIControl.State.normal)
  142. titleButton.setTitleColor(k333333Color, for: UIControl.State.normal)
  143. titleButton.titleLabel?.font = kMediumFont14
  144. titleButton.rx.tap.subscribe(onNext: { [weak self] (data) in
  145. NotificationCenter.default.post(name: NSNotification.Name(rawValue: "CommunityUser"), object: self?.communityFollowDataModel?.followUid)
  146. }).disposed(by: disposeBag)
  147. return titleButton
  148. }()
  149. private lazy var timeStatusLabel: UILabel = {
  150. let timeStatusLabel = UILabel()
  151. timeStatusLabel.textColor = k999999Color
  152. timeStatusLabel.font = kRegularFont14
  153. return timeStatusLabel
  154. }()
  155. private lazy var oneCardView: UIView = {
  156. let oneCardView = UIView()
  157. oneCardView.backgroundColor = kF4F4F4Color
  158. oneCardView.cornerRadius = 4
  159. oneCardView.masksToBounds = true
  160. oneCardView.isHidden = true
  161. return oneCardView
  162. }()
  163. private lazy var avatarOtherButton: UIButton = {
  164. let avatarOtherButton = UIButton(type: UIButton.ButtonType.custom)
  165. avatarOtherButton.setImage(kImage(name: "default_pic"), for: UIControl.State.normal)
  166. avatarOtherButton.imageView?.contentMode = .scaleAspectFill
  167. avatarOtherButton.imageView?.clipsToBounds = true
  168. avatarOtherButton.cornerRadius = 20
  169. avatarOtherButton.masksToBounds = true
  170. avatarOtherButton.rx.tap.subscribe(onNext: {
  171. [weak self] (data) in
  172. NotificationCenter.default.post(name: NSNotification.Name(rawValue: "CommunityUser"), object: self?.communityFollowDataModel?.relateData?.uid)
  173. }).disposed(by: disposeBag)
  174. return avatarOtherButton
  175. }()
  176. private lazy var titleOtherButton: UIButton = {
  177. let titleOtherButton = UIButton(type: UIButton.ButtonType.custom)
  178. titleOtherButton.setTitle("其他用户昵称", for: UIControl.State.normal)
  179. titleOtherButton.setTitleColor(k333333Color, for: UIControl.State.normal)
  180. titleOtherButton.titleLabel?.font = kMediumFont15
  181. titleOtherButton.rx.tap.subscribe(onNext: {
  182. [weak self] (data) in
  183. NotificationCenter.default.post(name: NSNotification.Name(rawValue: "CommunityUser"), object: self?.communityFollowDataModel?.relateData?.uid)
  184. }).disposed(by: disposeBag)
  185. return titleOtherButton
  186. }()
  187. private lazy var followButton: UIButton = {
  188. let followButton = UIButton(type: UIButton.ButtonType.custom)
  189. followButton.titleLabel?.font = kRegularFont13
  190. followButton.layer.cornerRadius = 14
  191. followButton.layer.masksToBounds = true
  192. followButton.rx.tap.subscribe(onNext: {[weak self] (data) in
  193. followButton.isEnabled = false
  194. if let followClosure = self?.followClosure {
  195. followClosure()
  196. }
  197. }).disposed(by: disposeBag)
  198. return followButton
  199. }()
  200. private lazy var twoCardView: UIView = {
  201. let twoCardView = UIView()
  202. twoCardView.backgroundColor = kF4F4F4Color
  203. twoCardView.isHidden = true
  204. twoCardView.cornerRadius = 4
  205. twoCardView.masksToBounds = true
  206. twoCardView.addTapGesture(1, target: self, action: #selector(contentDetail))
  207. return twoCardView
  208. }()
  209. private lazy var twoTitleLabel: UILabel = {
  210. let twoTitleLabel = UILabel()
  211. twoTitleLabel.textColor = k333333Color
  212. twoTitleLabel.font = kMediumFont16
  213. return twoTitleLabel
  214. }()
  215. private lazy var twoSubtitleLabel: UILabel = {
  216. let twoSubtitleLabel = UILabel()
  217. twoSubtitleLabel.textColor = k999999Color
  218. twoSubtitleLabel.font = kRegularFont14
  219. return twoSubtitleLabel
  220. }()
  221. private lazy var twoGoImageView: UIImageView = {
  222. let twoGoImageView = UIImageView()
  223. twoGoImageView.image = kImage(name: "my_arrows_unfold")
  224. return twoGoImageView
  225. }()
  226. private lazy var threeCardView: UIView = {
  227. let threeCardView = UIView()
  228. threeCardView.backgroundColor = kF4F4F4Color
  229. threeCardView.isHidden = true
  230. threeCardView.cornerRadius = 4
  231. threeCardView.masksToBounds = true
  232. threeCardView.addTapGesture(1, target: self, action: #selector(contentDetail))
  233. return threeCardView
  234. }()
  235. private lazy var threeTitleLabel: UILabel = {
  236. let threeTitleLabel = UILabel()
  237. threeTitleLabel.textColor = k333333Color
  238. threeTitleLabel.font = kMediumFont16
  239. return threeTitleLabel
  240. }()
  241. private lazy var threeGoImageView: UIImageView = {
  242. let threeGoImageView = UIImageView()
  243. threeGoImageView.image = kImage(name: "my_arrows_unfold")
  244. return threeGoImageView
  245. }()
  246. private lazy var skittlesImageView: UIImageView = {
  247. let skittlesImageView = UIImageView()
  248. skittlesImageView.image = kImage(name: "ico_bean_org_40px")
  249. skittlesImageView.cornerRadius = 8
  250. skittlesImageView.masksToBounds = true
  251. return skittlesImageView
  252. }()
  253. private lazy var skittlesTitleLabel: UILabel = {
  254. let skittlesTitleLabel = UILabel()
  255. skittlesTitleLabel.textColor = k333333Color
  256. skittlesTitleLabel.font = kRegularFont13
  257. return skittlesTitleLabel
  258. }()
  259. var communityFollowDataModel : CommunityFollowDataModel? {
  260. didSet {
  261. avatarButton.kf.setImage(with: kURLThumbnailsImage(name: communityFollowDataModel?.followAvatar ?? "",size: kSize28x28Image), for: UIControl.State.normal , placeholder: kImage(name: "default_avatar"))
  262. titleButton.setTitle(communityFollowDataModel?.followUsername, for: UIControl.State.normal)
  263. skittlesTitleLabel.text = "收获 \(communityFollowDataModel?.content?.beans ?? 0) U米"
  264. communityFollowType = CommunityFollowType(rawValue: communityFollowDataModel?.type ?? "1")
  265. }
  266. }
  267. var communityFollowType: CommunityFollowType? {
  268. didSet {
  269. switch communityFollowType {
  270. case .follow?:
  271. timeStatusLabel.text = "\(communityFollowDataModel?.createdAt ?? "") 关注了"
  272. avatarOtherButton.kf.setImage(with: kURLThumbnailsImage(name: communityFollowDataModel?.relateData?.avatar ?? "",size: kSize40x40Image), for: UIControl.State.normal , placeholder: kImage(name: "default_avatar"))
  273. titleOtherButton.setTitle(communityFollowDataModel?.relateData?.username, for: UIControl.State.normal)
  274. if communityFollowDataModel?.relateData?.uid == UserModel.shared().getModel()?.uid {
  275. followButton.isHidden = true
  276. }else {
  277. followButton.isHidden = false
  278. }
  279. CommunityFollowUserViewModel.setFollowFeedType(followButton: followButton, followType: FollowType(rawValue: communityFollowDataModel?.relateData?.isFollow ?? 0))
  280. oneCardView.isHidden = false
  281. twoCardView.isHidden = true
  282. threeCardView.isHidden = true
  283. skittlesImageView.isHidden = true
  284. skittlesTitleLabel.isHidden = true
  285. break
  286. case .comment?:
  287. timeStatusLabel.text = "\(communityFollowDataModel?.createdAt ?? "") 评论"
  288. twoTitleLabel.text = communityFollowDataModel?.content?.postDesc ?? ""
  289. twoSubtitleLabel.text = "“\(communityFollowDataModel?.content?.commentDesc ?? "")”"
  290. oneCardView.isHidden = true
  291. twoCardView.isHidden = false
  292. threeCardView.isHidden = true
  293. if communityFollowDataModel?.content?.beans == nil || communityFollowDataModel?.content?.beans ?? 0 <= 0 {
  294. skittlesImageView.isHidden = true
  295. skittlesTitleLabel.isHidden = true
  296. }else {
  297. skittlesImageView.isHidden = false
  298. skittlesTitleLabel.isHidden = false
  299. skittlesImageView.snp_remakeConstraints { (make) in
  300. make.left.equalTo(15)
  301. make.top.equalTo(twoCardView.snp_bottom).offset(12)
  302. make.size.equalTo(16)
  303. }
  304. skittlesTitleLabel.snp_remakeConstraints { (make) in
  305. make.left.equalTo(skittlesImageView.snp_right).offset(2)
  306. make.top.equalTo(skittlesImageView)
  307. }
  308. }
  309. break
  310. case .forward?:
  311. timeStatusLabel.text = "\(communityFollowDataModel?.createdAt ?? "") 转发"
  312. threeTitleLabel.text = communityFollowDataModel?.content?.postDesc ?? ""
  313. oneCardView.isHidden = true
  314. twoCardView.isHidden = true
  315. threeCardView.isHidden = false
  316. if communityFollowDataModel?.content?.beans == nil || communityFollowDataModel?.content?.beans ?? 0 <= 0 {
  317. skittlesImageView.isHidden = true
  318. skittlesTitleLabel.isHidden = true
  319. }else {
  320. skittlesImageView.isHidden = false
  321. skittlesTitleLabel.isHidden = false
  322. skittlesImageView.snp_remakeConstraints { (make) in
  323. make.left.equalTo(15)
  324. make.top.equalTo(twoCardView.snp_bottom).offset(12)
  325. make.size.equalTo(16)
  326. }
  327. skittlesTitleLabel.snp_remakeConstraints { (make) in
  328. make.left.equalTo(skittlesImageView.snp_right).offset(2)
  329. make.top.equalTo(skittlesImageView)
  330. }
  331. }
  332. break
  333. case .like?:
  334. timeStatusLabel.text = "\(communityFollowDataModel?.createdAt ?? "") 点赞"
  335. threeTitleLabel.text = communityFollowDataModel?.content?.postDesc ?? ""
  336. oneCardView.isHidden = true
  337. twoCardView.isHidden = true
  338. threeCardView.isHidden = false
  339. if communityFollowDataModel?.content?.beans == nil || communityFollowDataModel?.content?.beans ?? 0 <= 0 {
  340. skittlesImageView.isHidden = true
  341. skittlesTitleLabel.isHidden = true
  342. }else {
  343. skittlesImageView.isHidden = false
  344. skittlesTitleLabel.isHidden = false
  345. skittlesImageView.snp_remakeConstraints { (make) in
  346. make.left.equalTo(15)
  347. make.top.equalTo(twoCardView.snp_bottom).offset(12)
  348. make.size.equalTo(16)
  349. }
  350. skittlesTitleLabel.snp_remakeConstraints { (make) in
  351. make.left.equalTo(skittlesImageView.snp_right).offset(2)
  352. make.top.equalTo(skittlesImageView)
  353. }
  354. }
  355. break
  356. case .collection?:
  357. timeStatusLabel.text = "\(communityFollowDataModel?.createdAt ?? "") 收藏"
  358. threeTitleLabel.text = communityFollowDataModel?.content?.postDesc ?? ""
  359. oneCardView.isHidden = true
  360. twoCardView.isHidden = true
  361. threeCardView.isHidden = false
  362. if communityFollowDataModel?.content?.beans == nil || communityFollowDataModel?.content?.beans ?? 0 <= 0 {
  363. skittlesImageView.isHidden = true
  364. skittlesTitleLabel.isHidden = true
  365. }else {
  366. skittlesImageView.isHidden = false
  367. skittlesTitleLabel.isHidden = false
  368. skittlesImageView.snp_remakeConstraints { (make) in
  369. make.left.equalTo(15)
  370. make.top.equalTo(twoCardView.snp_bottom).offset(12)
  371. make.size.equalTo(16)
  372. }
  373. skittlesTitleLabel.snp_remakeConstraints { (make) in
  374. make.left.equalTo(skittlesImageView.snp_right).offset(2)
  375. make.top.equalTo(skittlesImageView)
  376. }
  377. }
  378. break
  379. default:
  380. break
  381. }
  382. }
  383. }
  384. /// 内容详情页面
  385. @objc func contentDetail() {
  386. if PostType(rawValue: communityFollowDataModel?.relateData?.type ?? "video") == .video {
  387. NotificationCenter.default.post(name: NSNotification.Name(rawValue: "CommunityContentDetailClosure"), object: communityFollowDataModel?.relateId)
  388. }else {
  389. NotificationCenter.default.post(name: NSNotification.Name(rawValue: "CommunityContentDetailClosure"), object: communityFollowDataModel?.relateId)
  390. }
  391. }
  392. }