PersonViewUserAndOtherHeaderView.swift 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271
  1. //
  2. // PersonViewUserAndOtherHeaderView.swift
  3. // RainbowPlanet
  4. //
  5. // Created by 南鑫林 on 2019/6/17.
  6. // Copyright © 2019 RainbowPlanet. All rights reserved.
  7. //
  8. import UIKit
  9. import Kingfisher
  10. /// 用户类型
  11. ///
  12. /// - user: 自己
  13. /// - other: 其他类型
  14. enum PersonViewUserAndOtherHeaderViewType {
  15. case user
  16. case other
  17. }
  18. class PersonViewUserAndOtherHeaderView: BaseView {
  19. var imageViewFrame = CGRect(x: 0, y: 0, width: kScreenWidth, height: 140 + kNavBarTotalHeight)
  20. var personViewUserAndOtherHeaderViewType : PersonViewUserAndOtherHeaderViewType? {
  21. didSet {
  22. if personViewUserAndOtherHeaderViewType == .user {
  23. followButton.isHidden = true
  24. editButton.isHidden = false
  25. }else {
  26. followButton.isHidden = false
  27. editButton.isHidden = true
  28. }
  29. }
  30. }
  31. override func setupViews() {
  32. addSubview(bgImageView)
  33. addSubview(bgView)
  34. bgView.addSubview(titleLabel)
  35. bgView.addSubview(subtitleLabel)
  36. bgView.addSubview(followNumberButton)
  37. bgView.addSubview(fanNumberButton)
  38. bgView.addSubview(avatarButton)
  39. bgView.addSubview(editButton)
  40. bgView.addSubview(followButton)
  41. }
  42. override func setupLayouts() {
  43. titleLabel.snp_makeConstraints { (make) in
  44. make.bottom.equalTo(subtitleLabel.snp_top).offset(-10)
  45. make.left.equalTo(14)
  46. make.right.equalTo(avatarButton.snp.left).offset(-15)
  47. }
  48. subtitleLabel.snp_makeConstraints { (make) in
  49. make.bottom.equalTo(followNumberButton.snp_top).offset(-30)
  50. make.left.equalTo(14)
  51. make.right.equalTo(-100)
  52. }
  53. followNumberButton.snp_makeConstraints { (make) in
  54. make.bottom.equalTo(-23)
  55. make.left.equalTo(14)
  56. make.height.equalTo(20)
  57. }
  58. fanNumberButton.snp_makeConstraints { (make) in
  59. make.centerY.height.equalTo(followNumberButton)
  60. make.left.equalTo(followNumberButton.snp_right).offset(20)
  61. }
  62. avatarButton.snp_makeConstraints { (make) in
  63. make.bottom.equalTo(-66)
  64. make.right.equalTo(-20)
  65. make.size.equalTo(60)
  66. }
  67. editButton.snp_makeConstraints { (make) in
  68. make.centerX.equalTo(avatarButton)
  69. make.bottom.equalTo(-23)
  70. make.width.equalTo(64)
  71. make.height.equalTo(24)
  72. }
  73. followButton.snp_makeConstraints { (make) in
  74. make.centerX.equalTo(avatarButton)
  75. make.bottom.equalTo(-23)
  76. make.width.equalTo(60)
  77. make.height.equalTo(28)
  78. }
  79. }
  80. private lazy var bgImageView: UIImageView = {
  81. let bgImageView = UIImageView(frame: CGRect(x: 0, y: 0, width: kScreenWidth, height: 140 + kNavBarTotalHeight))
  82. bgImageView.image = kImage(name: "default_pic")
  83. bgImageView.contentMode = .scaleAspectFill
  84. bgImageView.layer.masksToBounds = true
  85. return bgImageView
  86. }()
  87. private lazy var bgView: UIView = {
  88. let bgView = UIView(frame: CGRect(x: 0, y: 0, width: kScreenWidth, height: 140 + kNavBarTotalHeight))
  89. bgView.backgroundColor = UIColor(hexString: "000000", alpha: 0.5)
  90. return bgView
  91. }()
  92. private lazy var titleLabel: UILabel = {
  93. let titleLabel = UILabel()
  94. titleLabel.text = "昵称"
  95. titleLabel.textColor = .white
  96. titleLabel.font = kBoldFont18
  97. return titleLabel
  98. }()
  99. private lazy var subtitleLabel: UILabel = {
  100. let subtitleLabel = UILabel()
  101. subtitleLabel.text = "添加个人介绍,认识更多老板~"
  102. subtitleLabel.textColor = kbbbbbbColor
  103. subtitleLabel.font = kRegularFont10
  104. return subtitleLabel
  105. }()
  106. private lazy var followNumberButton: UIButton = {
  107. let followNumberButton = UIButton(type: UIButton.ButtonType.custom)
  108. followNumberButton.setTitleColor(kf0f0f0Color, for: UIControl.State.normal)
  109. followNumberButton.titleLabel?.font = kBoldFont14
  110. followNumberButton.setTitle("0 关注", for: UIControl.State.normal)
  111. followNumberButton.rx.tap.subscribe(onNext: {
  112. [weak self] (data) in
  113. let vc = MyFollowAndFanViewController()
  114. vc.myfollowAndFanType = .follow
  115. vc.userDetailModel = self?.userDetailModel
  116. if self?.personViewUserAndOtherHeaderViewType == .user {
  117. vc.navigationBar.title = "我的关注"
  118. }else {
  119. vc.navigationBar.title = "TA关注"
  120. }
  121. self?.findViewController().navigationController?.pushViewController(vc, animated: true)
  122. }).disposed(by: disposeBag)
  123. return followNumberButton
  124. }()
  125. private lazy var fanNumberButton: UIButton = {
  126. let fanNumberButton = UIButton(type: UIButton.ButtonType.custom)
  127. fanNumberButton.setTitleColor(kf0f0f0Color, for: UIControl.State.normal)
  128. fanNumberButton.titleLabel?.font = kBoldFont14
  129. fanNumberButton.setTitle("0 粉丝", for: UIControl.State.normal)
  130. fanNumberButton.rx.tap.subscribe(onNext: {
  131. [weak self] (data) in
  132. let vc = MyFollowAndFanViewController()
  133. vc.myfollowAndFanType = .fan
  134. vc.userDetailModel = self?.userDetailModel
  135. if self?.personViewUserAndOtherHeaderViewType == .user {
  136. vc.navigationBar.title = "我的粉丝"
  137. }else {
  138. vc.navigationBar.title = "TA粉丝"
  139. }
  140. self?.findViewController().navigationController?.pushViewController(vc, animated: true)
  141. }).disposed(by: disposeBag)
  142. return fanNumberButton
  143. }()
  144. private lazy var avatarButton: UIButton = {
  145. let avatarButton = UIButton(type: UIButton.ButtonType.custom)
  146. avatarButton.setBackgroundImage(kImage(name: "default_avatar"), for: UIControl.State.normal)
  147. avatarButton.cornerRadius = 30
  148. avatarButton.masksToBounds = true
  149. avatarButton.rx.tap.subscribe(onNext: {[weak self] (data) in
  150. let currentVC = avatarButton.findViewController() as? BaseViewController
  151. let vc = BrowsePicturesViewController.init(images: [avatarButton.currentBackgroundImage!], index: 0)
  152. currentVC?.navigationController?.pushViewController(vc, animated: true)
  153. }).disposed(by: disposeBag)
  154. return avatarButton
  155. }()
  156. lazy var followButton: UIButton = {
  157. let followButton = UIButton(type: UIButton.ButtonType.custom)
  158. followButton.setTitle("关注", for: UIControl.State.normal)
  159. followButton.titleLabel?.font = kMediumFont13
  160. followButton.alpha = 1
  161. followButton.cornerRadius = 14
  162. followButton.masksToBounds = true
  163. followButton.isHidden = true
  164. followButton.rx.tap.subscribe(onNext: {
  165. [weak self] (data) in
  166. if self?.userDetailModel?.isFollowStatus == 0 {
  167. self?.userFollow(followUid: self?.userDetailModel?.uid ?? 0, completion: { [weak self,weak followButton] (isFollowStatus) in
  168. self?.userDetailModel?.isFollowStatus = isFollowStatus
  169. CommunityFollowUserViewModel.setMineFollowType(followButton: followButton!, followType: FollowType(rawValue: self?.userDetailModel?.isFollowStatus ?? 0)!)
  170. })
  171. }else {
  172. self?.userCancelFollow(followUid: self?.userDetailModel?.uid ?? 0, completion: { [weak self,weak followButton] (isFollowStatus) in
  173. self?.userDetailModel?.isFollowStatus = isFollowStatus
  174. CommunityFollowUserViewModel.setMineFollowType(followButton: followButton!, followType: FollowType(rawValue: self?.userDetailModel?.isFollowStatus ?? 0)!)
  175. })
  176. }
  177. }).disposed(by: disposeBag)
  178. return followButton
  179. }()
  180. private lazy var editButton : UIButton = {
  181. let editButton = UIButton(type: UIButton.ButtonType.custom)
  182. editButton.cornerRadius = 12
  183. editButton.masksToBounds = true
  184. editButton.setTitle("编辑资料", for: UIControl.State.normal)
  185. editButton.setTitleColor(kffffffColor, for: UIControl.State.normal)
  186. editButton.titleLabel?.font = kRegularFont12
  187. editButton.layer.borderColor = kffffffColor.cgColor
  188. editButton.layer.borderWidth = 1
  189. editButton.isHidden = true
  190. editButton.backgroundColor = UIColor.clear
  191. editButton.rx.tap.subscribe(onNext: {[weak self] (data) in
  192. let currentVC = editButton.findViewController() as? BaseViewController
  193. let vc = ModifyDataViewController()
  194. vc.userDetailModel = self?.userDetailModel
  195. currentVC?.navigationController?.pushViewController(vc, animated: true)
  196. }).disposed(by: disposeBag)
  197. return editButton
  198. }()
  199. func scrollViewDidScroll(contentOffsetY: CGFloat) {
  200. if contentOffsetY < 0 {
  201. var frame = imageViewFrame
  202. frame.size.height -= contentOffsetY
  203. frame.origin.y = contentOffsetY
  204. bgImageView.frame = frame
  205. bgView.frame = frame
  206. }
  207. }
  208. var userDetailModel: UserDetailModel? {
  209. didSet {
  210. CommunityFollowUserViewModel.setMineFollowType(followButton: followButton, followType: FollowType(rawValue: userDetailModel?.isFollowStatus ?? 0)!)
  211. bgImageView.kf.setImage(with: kURLImage(name: userDetailModel?.backgroundImg ?? "default_pic"), placeholder: kImage(name: "default_pic"))
  212. titleLabel.text = userDetailModel?.username
  213. if userDetailModel?.signature == "" || userDetailModel?.signature == nil {
  214. if userDetailModel?.uid == UserModel.shared().getModel()?.uid {
  215. subtitleLabel.text = "添加个人介绍,认识更多老板~"
  216. }else {
  217. subtitleLabel.text = "暂无个人介绍"
  218. }
  219. }else {
  220. subtitleLabel.text = userDetailModel?.signature
  221. }
  222. followNumberButton.setTitle("\(userDetailModel?.followCount ?? "0") 关注", for: UIControl.State.normal)
  223. fanNumberButton.setTitle("\(userDetailModel?.fansCount ?? "0") 粉丝", for: UIControl.State.normal)
  224. avatarButton.kf.setBackgroundImage(with: kURLThumbnailsImage(name: userDetailModel?.avatar ?? "", size: kSize60x60Image), for: UIControl.State.normal, placeholder: kImage(name: "default_avatar"))
  225. KingfisherManager.shared.cache.clearMemoryCache()
  226. }
  227. }
  228. }
  229. extension PersonViewUserAndOtherHeaderView {
  230. /// 关注
  231. func userFollow(followUid:Int,completion: @escaping (Int) -> Void) {
  232. SwiftMoyaNetWorkServiceUser.shared().userFollowApi(followUid: followUid) {(followStatusModel) -> (Void) in
  233. let followStatusModel = followStatusModel as? FollowStatusModel
  234. completion(followStatusModel?.isFollowStatus ?? 0)
  235. }
  236. }
  237. /// 取消关注
  238. func userCancelFollow(followUid:Int,completion: @escaping (Int) -> Void) {
  239. SwiftMoyaNetWorkServiceUser.shared().userCancelFollowApi(followUid: followUid) {
  240. (followStatusModel) -> (Void) in
  241. let followStatusModel = followStatusModel as? FollowStatusModel
  242. completion(followStatusModel?.isFollowStatus ?? 0)
  243. }
  244. }
  245. }