CircleHeaderView.swift 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257
  1. //
  2. // CircleHeaderView.swift
  3. // RainbowPlanet
  4. //
  5. // Created by 南鑫林 on 2019/10/15.
  6. // Copyright © 2019 RainbowPlanet. All rights reserved.
  7. //
  8. import UIKit
  9. import SwiftyMediator
  10. class CircleHeaderView: BaseView {
  11. var imageViewFrame = CGRect(x: 0, y: 0, width: kScreenWidth, height: 114 + kNavBarTotalHeight + 8)
  12. override func setupViews() {
  13. addSubview(bgImageView)
  14. addSubview(bgView)
  15. bgView.addSubview(titleLabel)
  16. addSubview(midBgView)
  17. addSubview(avatarImageView)
  18. midBgView.addSubview(circleButton)
  19. midBgView.addSubview(chatRootButton)
  20. midBgView.addSubview(memberNameLabel)
  21. midBgView.addSubview(memberNumberLabel)
  22. midBgView.addSubview(albumNameLabel)
  23. midBgView.addSubview(albumNumberLabel)
  24. }
  25. override func setupLayouts() {
  26. titleLabel.snp.makeConstraints { (make) in
  27. make.bottom.equalTo(-50)
  28. make.left.equalTo(14)
  29. make.right.equalTo(-14)
  30. }
  31. avatarImageView.snp.makeConstraints { (make) in
  32. make.top.equalTo(midBgView).offset(-30)
  33. make.left.equalTo(14)
  34. make.size.equalTo(80)
  35. }
  36. circleButton.snp.makeConstraints { (make) in
  37. make.top.equalTo(20)
  38. make.right.equalTo(-14)
  39. make.width.equalTo(110)
  40. make.height.equalTo(30)
  41. }
  42. chatRootButton.snp.makeConstraints { (make) in
  43. make.top.equalTo(20)
  44. make.right.equalTo(circleButton.snp.left).offset(-10)
  45. make.width.equalTo(64)
  46. make.height.equalTo(30)
  47. }
  48. memberNameLabel.snp.makeConstraints { (make) in
  49. make.top.equalTo(avatarImageView.snp.bottom).offset(22)
  50. make.left.equalTo(14)
  51. }
  52. memberNumberLabel.snp.makeConstraints { (make) in
  53. make.centerY.equalTo(memberNameLabel)
  54. make.left.equalTo(memberNameLabel.snp.right).offset(8)
  55. }
  56. albumNameLabel.snp.makeConstraints { (make) in
  57. make.centerY.equalTo(memberNameLabel)
  58. make.left.equalTo(memberNumberLabel.snp.right).offset(30)
  59. }
  60. albumNumberLabel.snp.makeConstraints { (make) in
  61. make.centerY.equalTo(memberNameLabel)
  62. make.left.equalTo(albumNameLabel.snp.right).offset(8)
  63. }
  64. }
  65. override func setupData() {
  66. chatRootButton.rx.tap.subscribe(onNext: { [weak self] (_) in
  67. if self?.communityCircleModel?.chatroom?.isOpen == 1 {
  68. self?.userChatroomValidRoomApi()
  69. }else {
  70. SwiftProgressHUD.shared().showText("这个圈子没有聊天室哦~")
  71. }
  72. }).disposed(by: disposeBag)
  73. circleButton.rx.tap.subscribe(onNext: { [weak self] (_) in
  74. if self?.circleButton.isSelected ?? false { //退出圈子
  75. self?.communityCircleJoinDeleteApi()
  76. }else { //加入圈子
  77. // 是否答题
  78. if self?.communityCircleModel?.joinLimit == 0 { //不需要
  79. self?.communityCircleJoinPostApi()
  80. } else if self?.communityCircleModel?.joinLimit == 1 { //需要
  81. let vc = CircleQuestionsAnswersViewController()
  82. vc.circleId = self?.communityCircleModel?.id ?? 0
  83. UIViewController.topMost?.navigationController?.pushViewController(vc, animated: true)
  84. }
  85. }
  86. }).disposed(by: disposeBag)
  87. }
  88. private lazy var bgImageView: UIImageView = {
  89. let bgImageView = UIImageView(frame: CGRect(x: 0, y: 0, width: kScreenWidth, height: 114 + kNavBarTotalHeight + 8))
  90. bgImageView.image = kImage(name: "default_pic")
  91. bgImageView.contentMode = .scaleAspectFill
  92. bgImageView.layer.masksToBounds = true
  93. return bgImageView
  94. }()
  95. private lazy var bgView: UIView = {
  96. let bgView = UIView(frame: CGRect(x: 0, y: 0, width: kScreenWidth, height: 114 + kNavBarTotalHeight + 8))
  97. bgView.backgroundColor = UIColor(hexString: "000000", alpha: 0.5)
  98. return bgView
  99. }()
  100. private lazy var titleLabel: UILabel = {
  101. let titleLabel = UILabel()
  102. titleLabel.text = "昵称"
  103. titleLabel.textColor = .white
  104. titleLabel.font = kMediumFont23
  105. return titleLabel
  106. }()
  107. private lazy var midBgView: UIView = {
  108. let midBgView = UIView(frame: CGRect(x: 0, y: 114 + kNavBarTotalHeight, width: kScreenWidth, height: 104))
  109. midBgView.backgroundColor = .white
  110. midBgView.configRectCorner(corner: [.topRight,.topLeft], radii: CGSize(width: 8, height: 8))
  111. return midBgView
  112. }()
  113. lazy var avatarImageView: UIImageView = {
  114. let avatarImageView = UIImageView()
  115. avatarImageView.image = kImage(name: "default_avatar")
  116. avatarImageView.cornerRadius = 40
  117. avatarImageView.masksToBounds = true
  118. return avatarImageView
  119. }()
  120. lazy var circleButton: UIButton = {
  121. let circleButton = UIButton(type: UIButton.ButtonType.custom)
  122. circleButton.setBackgroundImage(UIImage.imageWithColor(color: kThemeColor), for: UIControl.State.normal)
  123. circleButton.setBackgroundImage(UIImage.imageWithColor(color: .white), for: UIControl.State.selected)
  124. circleButton.setTitle("加入圈子", for: UIControl.State.normal)
  125. circleButton.setTitle("退出圈子", for: UIControl.State.selected)
  126. circleButton.setTitleColor(.white, for: UIControl.State.normal)
  127. circleButton.setTitleColor(kThemeColor, for: UIControl.State.selected)
  128. circleButton.titleLabel?.font = kRegularFont14
  129. circleButton.layer.borderColor = kThemeColor.cgColor
  130. circleButton.layer.borderWidth = 1
  131. circleButton.cornerRadius = 15
  132. circleButton.masksToBounds = true
  133. return circleButton
  134. }()
  135. lazy var chatRootButton: UIButton = {
  136. let chatRootButton = UIButton(type: UIButton.ButtonType.custom)
  137. chatRootButton.setBackgroundImage(UIImage.imageWithColor(color: .white), for: UIControl.State.normal)
  138. chatRootButton.setTitle("聊天室", for: UIControl.State.normal)
  139. chatRootButton.setTitleColor(k584F60Color, for: UIControl.State.normal)
  140. chatRootButton.titleLabel?.font = kRegularFont14
  141. chatRootButton.layer.borderColor = k584F60Color.cgColor
  142. chatRootButton.layer.borderWidth = 1
  143. chatRootButton.cornerRadius = 15
  144. chatRootButton.masksToBounds = true
  145. return chatRootButton
  146. }()
  147. lazy var memberNameLabel: UILabel = {
  148. let memberNameLabel = UILabel()
  149. memberNameLabel.text = "成员"
  150. memberNameLabel.textColor = .black
  151. memberNameLabel.font = kRegularFont14
  152. return memberNameLabel
  153. }()
  154. lazy var memberNumberLabel: UILabel = {
  155. let memberNumberLabel = UILabel()
  156. memberNumberLabel.text = "0"
  157. memberNumberLabel.textColor = .black
  158. memberNumberLabel.font = kMediumFont16
  159. return memberNumberLabel
  160. }()
  161. lazy var albumNameLabel: UILabel = {
  162. let albumNameLabel = UILabel()
  163. albumNameLabel.text = "相册"
  164. albumNameLabel.textColor = .black
  165. albumNameLabel.font = kRegularFont14
  166. return albumNameLabel
  167. }()
  168. lazy var albumNumberLabel: UILabel = {
  169. let albumNumberLabel = UILabel()
  170. albumNumberLabel.text = "0"
  171. albumNumberLabel.textColor = .black
  172. albumNumberLabel.font = kMediumFont16
  173. return albumNumberLabel
  174. }()
  175. var communityCircleModel :CommunityCircleModel? {
  176. didSet {
  177. bgImageView.kf.setImage(with: kURLImage(name: communityCircleModel?.image ?? "default_pic"), placeholder: kImage(name: "default_pic"))
  178. titleLabel.text = communityCircleModel?.name
  179. avatarImageView.kf.setImage(with: kURLImage(name: communityCircleModel?.image ?? "default_avatar"), placeholder: kImage(name: "default_avatar"))
  180. memberNumberLabel.text = communityCircleModel?.members?.extra
  181. albumNumberLabel.text = communityCircleModel?.pictures?.extra
  182. if communityCircleModel?.isJoin == 0 {
  183. circleButton.isSelected = false
  184. }else if communityCircleModel?.isJoin == 1 {
  185. circleButton.isSelected = true
  186. }
  187. }
  188. }
  189. /// 验证聊天室是否开启了
  190. func userChatroomValidRoomApi() {
  191. SwiftMoyaNetWorkServiceUser.shared().userChatroomValidRoomApi(ChatroomId: communityCircleModel?.chatroom?.extra ?? "0") { [weak self] data in
  192. Mediator.push(RongCloudIMRouterModuleType.IMChatRoom(targetId: self?.communityCircleModel?.chatroom?.extra ?? "0", messageCount: 50, roomName: self?.communityCircleModel?.name ?? ""))
  193. }
  194. }
  195. /// 加入圈子
  196. func communityCircleJoinPostApi() {
  197. SwiftMoyaNetWorkServiceCommunity.shared().communityCircleJoinPostApi(circleId: communityCircleModel?.id ?? 0) {[weak self] (_) -> (Void) in
  198. self?.circleButton.isSelected = true
  199. self?.communityCircleModel?.isJoin = 1
  200. SwiftProgressHUD.shared().showText("加入圈子成功")
  201. }
  202. }
  203. /// 退出圈子
  204. func communityCircleJoinDeleteApi() {
  205. SwiftMoyaNetWorkServiceCommunity.shared().communityCircleJoinDeleteApi(circleId: communityCircleModel?.id ?? 0) {[weak self] (_) -> (Void) in
  206. self?.circleButton.isSelected = false
  207. self?.communityCircleModel?.isJoin = 0
  208. SwiftProgressHUD.shared().showText("退出圈子成功")
  209. }
  210. }
  211. func scrollViewDidScroll(contentOffsetY: CGFloat) {
  212. if contentOffsetY < 0 {
  213. var frame = imageViewFrame
  214. frame.size.height -= contentOffsetY
  215. frame.origin.y = contentOffsetY
  216. bgImageView.frame = frame
  217. bgView.frame = frame
  218. }
  219. }
  220. }