// // CommunityFollowStatusTableViewCell.swift // RainbowPlanet // // Created by 南鑫林 on 2019/6/12. // Copyright © 2019 RainbowPlanet. All rights reserved. // import UIKit import RxSwift import Kingfisher class CommunityFollowStatusTableViewCell: UITableViewCell { let disposeBag = DisposeBag() typealias FollowClosure = () -> Void var followClosure : FollowClosure? class func cellWith(tableView:UITableView,indexPath:IndexPath) -> CommunityFollowStatusTableViewCell { let ID = "CommunityFollowStatusTableViewCell" tableView.register(CommunityFollowStatusTableViewCell.self, forCellReuseIdentifier: ID) let cell : CommunityFollowStatusTableViewCell = tableView.dequeueReusableCell(withIdentifier: ID, for: indexPath) as! CommunityFollowStatusTableViewCell cell.indexPath = indexPath return cell } override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { super.init(style: style, reuseIdentifier: reuseIdentifier) setupViews() setupLayouts() } required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } var indexPath: IndexPath? { didSet { } } //MRAK: - 设置View private func setupViews() { self.selectionStyle = .none addSubview(avatarButton) addSubview(titleButton) addSubview(timeStatusLabel) addSubview(oneCardView) oneCardView.addSubview(avatarOtherButton) oneCardView.addSubview(titleOtherButton) oneCardView.addSubview(followButton) addSubview(twoCardView) twoCardView.addSubview(twoTitleLabel) twoCardView.addSubview(twoSubtitleLabel) twoCardView.addSubview(twoGoImageView) addSubview(threeCardView) threeCardView.addSubview(threeTitleLabel) threeCardView.addSubview(threeGoImageView) addSubview(skittlesImageView) addSubview(skittlesTitleLabel) } private func setupLayouts() { avatarButton.snp_makeConstraints { (make) in make.top.equalTo(27) make.left.equalTo(14) make.size.equalTo(28) } titleButton.snp_makeConstraints { (make) in make.centerY.equalTo(avatarButton) make.left.equalTo(avatarButton.snp_right).offset(7) } timeStatusLabel.snp_makeConstraints { (make) in make.centerY.equalTo(titleButton) make.left.equalTo(titleButton.snp_right).offset(10) } oneCardView.snp_makeConstraints { (make) in make.top.equalTo(avatarButton.snp_bottom).offset(10) make.left.equalTo(14) make.right.equalTo(-14) make.height.equalTo(64) } avatarOtherButton.snp_makeConstraints { (make) in make.centerY.equalToSuperview() make.left.equalTo(15) make.size.equalTo(40) } titleOtherButton.snp_makeConstraints { (make) in make.centerY.equalTo(avatarOtherButton) make.left.equalTo(avatarOtherButton.snp_right).offset(16) make.right.equalTo(followButton.snp.left).offset(-5) } followButton.snp_makeConstraints { (make) in make.centerY.equalTo(avatarOtherButton) make.right.equalToSuperview().offset(-15) make.height.equalTo(28) make.width.equalTo(60) } twoCardView.snp_makeConstraints { (make) in make.top.equalTo(avatarButton.snp_bottom).offset(10) make.left.equalTo(14) make.right.equalTo(-14) make.height.equalTo(70) } twoTitleLabel.snp_makeConstraints { (make) in make.top.left.equalTo(15) make.right.equalTo(-45) make.height.equalTo(16) } twoSubtitleLabel.snp_makeConstraints { (make) in make.bottom.equalTo(-15) make.left.equalTo(15) make.right.equalTo(-37) make.height.equalTo(14) } twoGoImageView.snp_makeConstraints { (make) in make.centerY.equalToSuperview() make.right.equalTo(-15) } threeCardView.snp_makeConstraints { (make) in make.top.equalTo(avatarButton.snp_bottom).offset(10) make.left.equalTo(14) make.right.equalTo(-14) make.height.equalTo(60) } threeTitleLabel.snp_makeConstraints { (make) in make.centerY.equalToSuperview() make.left.equalTo(15) make.right.equalTo(-45) } threeGoImageView.snp_makeConstraints { (make) in make.centerY.equalToSuperview() make.right.equalTo(-15) } } private lazy var avatarButton: UIButton = { let avatarButton = UIButton(type: UIButton.ButtonType.custom) avatarButton.setImage(kImage(name: "default_avatar"), for: UIControl.State.normal) avatarButton.imageView?.contentMode = .scaleAspectFill avatarButton.imageView?.clipsToBounds = true avatarButton.cornerRadius = 14 avatarButton.masksToBounds = true avatarButton.rx.tap.subscribe(onNext: { [weak self] (data) in NotificationCenter.default.post(name: NSNotification.Name(rawValue: "CommunityUser"), object: self?.communityFollowDataModel?.followUid) }).disposed(by: disposeBag) return avatarButton }() private lazy var titleButton: UIButton = { let titleButton = UIButton(type: UIButton.ButtonType.custom) titleButton.setTitle("用户昵称", for: UIControl.State.normal) titleButton.setTitleColor(k333333Color, for: UIControl.State.normal) titleButton.titleLabel?.font = kMediumFont14 titleButton.rx.tap.subscribe(onNext: { [weak self] (data) in NotificationCenter.default.post(name: NSNotification.Name(rawValue: "CommunityUser"), object: self?.communityFollowDataModel?.followUid) }).disposed(by: disposeBag) return titleButton }() private lazy var timeStatusLabel: UILabel = { let timeStatusLabel = UILabel() timeStatusLabel.textColor = k999999Color timeStatusLabel.font = kRegularFont14 return timeStatusLabel }() private lazy var oneCardView: UIView = { let oneCardView = UIView() oneCardView.backgroundColor = kF4F4F4Color oneCardView.cornerRadius = 4 oneCardView.masksToBounds = true oneCardView.isHidden = true return oneCardView }() private lazy var avatarOtherButton: UIButton = { let avatarOtherButton = UIButton(type: UIButton.ButtonType.custom) avatarOtherButton.setImage(kImage(name: "default_pic"), for: UIControl.State.normal) avatarOtherButton.imageView?.contentMode = .scaleAspectFill avatarOtherButton.imageView?.clipsToBounds = true avatarOtherButton.cornerRadius = 20 avatarOtherButton.masksToBounds = true avatarOtherButton.rx.tap.subscribe(onNext: { [weak self] (data) in NotificationCenter.default.post(name: NSNotification.Name(rawValue: "CommunityUser"), object: self?.communityFollowDataModel?.relateData?.uid) }).disposed(by: disposeBag) return avatarOtherButton }() private lazy var titleOtherButton: UIButton = { let titleOtherButton = UIButton(type: UIButton.ButtonType.custom) titleOtherButton.setTitle("其他用户昵称", for: UIControl.State.normal) titleOtherButton.setTitleColor(k333333Color, for: UIControl.State.normal) titleOtherButton.titleLabel?.font = kMediumFont15 titleOtherButton.rx.tap.subscribe(onNext: { [weak self] (data) in NotificationCenter.default.post(name: NSNotification.Name(rawValue: "CommunityUser"), object: self?.communityFollowDataModel?.relateData?.uid) }).disposed(by: disposeBag) return titleOtherButton }() private lazy var followButton: UIButton = { let followButton = UIButton(type: UIButton.ButtonType.custom) followButton.titleLabel?.font = kRegularFont13 followButton.layer.cornerRadius = 14 followButton.layer.masksToBounds = true followButton.rx.tap.subscribe(onNext: {[weak self] (data) in followButton.isEnabled = false if let followClosure = self?.followClosure { followClosure() } }).disposed(by: disposeBag) return followButton }() private lazy var twoCardView: UIView = { let twoCardView = UIView() twoCardView.backgroundColor = kF4F4F4Color twoCardView.isHidden = true twoCardView.cornerRadius = 4 twoCardView.masksToBounds = true twoCardView.addTapGesture(1, target: self, action: #selector(contentDetail)) return twoCardView }() private lazy var twoTitleLabel: UILabel = { let twoTitleLabel = UILabel() twoTitleLabel.textColor = k333333Color twoTitleLabel.font = kMediumFont16 return twoTitleLabel }() private lazy var twoSubtitleLabel: UILabel = { let twoSubtitleLabel = UILabel() twoSubtitleLabel.textColor = k999999Color twoSubtitleLabel.font = kRegularFont14 return twoSubtitleLabel }() private lazy var twoGoImageView: UIImageView = { let twoGoImageView = UIImageView() twoGoImageView.image = kImage(name: "my_arrows_unfold") return twoGoImageView }() private lazy var threeCardView: UIView = { let threeCardView = UIView() threeCardView.backgroundColor = kF4F4F4Color threeCardView.isHidden = true threeCardView.cornerRadius = 4 threeCardView.masksToBounds = true threeCardView.addTapGesture(1, target: self, action: #selector(contentDetail)) return threeCardView }() private lazy var threeTitleLabel: UILabel = { let threeTitleLabel = UILabel() threeTitleLabel.textColor = k333333Color threeTitleLabel.font = kMediumFont16 return threeTitleLabel }() private lazy var threeGoImageView: UIImageView = { let threeGoImageView = UIImageView() threeGoImageView.image = kImage(name: "my_arrows_unfold") return threeGoImageView }() private lazy var skittlesImageView: UIImageView = { let skittlesImageView = UIImageView() skittlesImageView.image = kImage(name: "ico_bean_org_40px") skittlesImageView.cornerRadius = 8 skittlesImageView.masksToBounds = true return skittlesImageView }() private lazy var skittlesTitleLabel: UILabel = { let skittlesTitleLabel = UILabel() skittlesTitleLabel.textColor = k333333Color skittlesTitleLabel.font = kRegularFont13 return skittlesTitleLabel }() var communityFollowDataModel : CommunityFollowDataModel? { didSet { avatarButton.kf.setImage(with: kURLThumbnailsImage(name: communityFollowDataModel?.followAvatar ?? "",size: kSize28x28Image), for: UIControl.State.normal , placeholder: kImage(name: "default_avatar")) titleButton.setTitle(communityFollowDataModel?.followUsername, for: UIControl.State.normal) skittlesTitleLabel.text = "收获 \(communityFollowDataModel?.content?.beans ?? 0) U米" communityFollowType = CommunityFollowType(rawValue: communityFollowDataModel?.type ?? "1") } } var communityFollowType: CommunityFollowType? { didSet { switch communityFollowType { case .follow?: timeStatusLabel.text = "\(communityFollowDataModel?.createdAt ?? "") 关注了" avatarOtherButton.kf.setImage(with: kURLThumbnailsImage(name: communityFollowDataModel?.relateData?.avatar ?? "",size: kSize40x40Image), for: UIControl.State.normal , placeholder: kImage(name: "default_avatar")) titleOtherButton.setTitle(communityFollowDataModel?.relateData?.username, for: UIControl.State.normal) if communityFollowDataModel?.relateData?.uid == UserModel.shared().getModel()?.uid { followButton.isHidden = true }else { followButton.isHidden = false } CommunityFollowUserViewModel.setFollowFeedType(followButton: followButton, followType: FollowType(rawValue: communityFollowDataModel?.relateData?.isFollow ?? 0)) oneCardView.isHidden = false twoCardView.isHidden = true threeCardView.isHidden = true skittlesImageView.isHidden = true skittlesTitleLabel.isHidden = true break case .comment?: timeStatusLabel.text = "\(communityFollowDataModel?.createdAt ?? "") 评论" twoTitleLabel.text = communityFollowDataModel?.content?.postDesc ?? "" twoSubtitleLabel.text = "“\(communityFollowDataModel?.content?.commentDesc ?? "")”" oneCardView.isHidden = true twoCardView.isHidden = false threeCardView.isHidden = true if communityFollowDataModel?.content?.beans == nil || communityFollowDataModel?.content?.beans ?? 0 <= 0 { skittlesImageView.isHidden = true skittlesTitleLabel.isHidden = true }else { skittlesImageView.isHidden = false skittlesTitleLabel.isHidden = false skittlesImageView.snp_remakeConstraints { (make) in make.left.equalTo(15) make.top.equalTo(twoCardView.snp_bottom).offset(12) make.size.equalTo(16) } skittlesTitleLabel.snp_remakeConstraints { (make) in make.left.equalTo(skittlesImageView.snp_right).offset(2) make.top.equalTo(skittlesImageView) } } break case .forward?: timeStatusLabel.text = "\(communityFollowDataModel?.createdAt ?? "") 转发" threeTitleLabel.text = communityFollowDataModel?.content?.postDesc ?? "" oneCardView.isHidden = true twoCardView.isHidden = true threeCardView.isHidden = false if communityFollowDataModel?.content?.beans == nil || communityFollowDataModel?.content?.beans ?? 0 <= 0 { skittlesImageView.isHidden = true skittlesTitleLabel.isHidden = true }else { skittlesImageView.isHidden = false skittlesTitleLabel.isHidden = false skittlesImageView.snp_remakeConstraints { (make) in make.left.equalTo(15) make.top.equalTo(twoCardView.snp_bottom).offset(12) make.size.equalTo(16) } skittlesTitleLabel.snp_remakeConstraints { (make) in make.left.equalTo(skittlesImageView.snp_right).offset(2) make.top.equalTo(skittlesImageView) } } break case .like?: timeStatusLabel.text = "\(communityFollowDataModel?.createdAt ?? "") 点赞" threeTitleLabel.text = communityFollowDataModel?.content?.postDesc ?? "" oneCardView.isHidden = true twoCardView.isHidden = true threeCardView.isHidden = false if communityFollowDataModel?.content?.beans == nil || communityFollowDataModel?.content?.beans ?? 0 <= 0 { skittlesImageView.isHidden = true skittlesTitleLabel.isHidden = true }else { skittlesImageView.isHidden = false skittlesTitleLabel.isHidden = false skittlesImageView.snp_remakeConstraints { (make) in make.left.equalTo(15) make.top.equalTo(twoCardView.snp_bottom).offset(12) make.size.equalTo(16) } skittlesTitleLabel.snp_remakeConstraints { (make) in make.left.equalTo(skittlesImageView.snp_right).offset(2) make.top.equalTo(skittlesImageView) } } break case .collection?: timeStatusLabel.text = "\(communityFollowDataModel?.createdAt ?? "") 收藏" threeTitleLabel.text = communityFollowDataModel?.content?.postDesc ?? "" oneCardView.isHidden = true twoCardView.isHidden = true threeCardView.isHidden = false if communityFollowDataModel?.content?.beans == nil || communityFollowDataModel?.content?.beans ?? 0 <= 0 { skittlesImageView.isHidden = true skittlesTitleLabel.isHidden = true }else { skittlesImageView.isHidden = false skittlesTitleLabel.isHidden = false skittlesImageView.snp_remakeConstraints { (make) in make.left.equalTo(15) make.top.equalTo(twoCardView.snp_bottom).offset(12) make.size.equalTo(16) } skittlesTitleLabel.snp_remakeConstraints { (make) in make.left.equalTo(skittlesImageView.snp_right).offset(2) make.top.equalTo(skittlesImageView) } } break default: break } } } /// 内容详情页面 @objc func contentDetail() { if PostType(rawValue: communityFollowDataModel?.relateData?.type ?? "video") == .video { NotificationCenter.default.post(name: NSNotification.Name(rawValue: "CommunityContentDetailClosure"), object: communityFollowDataModel?.relateId) }else { NotificationCenter.default.post(name: NSNotification.Name(rawValue: "CommunityContentDetailClosure"), object: communityFollowDataModel?.relateId) } } }