CircleHeaderView.swift 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283
  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. if self?.communityCircleModel?.answerCount == 0 {
  82. SwiftProgressHUD.shared().showText("今天答题次数已用完,\n请明天再加入哦~")
  83. }else {
  84. let vc = CircleQuestionsAnswersViewController()
  85. vc.circleId = self?.communityCircleModel?.id ?? 0
  86. vc.joinFail = {
  87. [weak self] answerCount in
  88. self?.communityCircleModel?.answerCount = answerCount
  89. }
  90. vc.joinSuccess = {
  91. [weak self] in
  92. self?.joinSuccess()
  93. }
  94. UIViewController.topMost?.navigationController?.pushViewController(vc, animated: true)
  95. }
  96. }
  97. }
  98. }).disposed(by: disposeBag)
  99. }
  100. private lazy var bgImageView: UIImageView = {
  101. let bgImageView = UIImageView(frame: CGRect(x: 0, y: 0, width: kScreenWidth, height: 114 + kNavBarTotalHeight + 8))
  102. bgImageView.image = kImage(name: "default_pic")
  103. bgImageView.contentMode = .scaleAspectFill
  104. bgImageView.layer.masksToBounds = true
  105. return bgImageView
  106. }()
  107. private lazy var bgView: UIView = {
  108. let bgView = UIView(frame: CGRect(x: 0, y: 0, width: kScreenWidth, height: 114 + kNavBarTotalHeight + 8))
  109. bgView.backgroundColor = UIColor(hexString: "000000", alpha: 0.5)
  110. return bgView
  111. }()
  112. private lazy var titleLabel: UILabel = {
  113. let titleLabel = UILabel()
  114. titleLabel.text = "昵称"
  115. titleLabel.textColor = .white
  116. titleLabel.font = kMediumFont23
  117. return titleLabel
  118. }()
  119. private lazy var midBgView: UIView = {
  120. let midBgView = UIView(frame: CGRect(x: 0, y: 114 + kNavBarTotalHeight, width: kScreenWidth, height: 104))
  121. midBgView.backgroundColor = .white
  122. midBgView.configRectCorner(corner: [.topRight,.topLeft], radii: CGSize(width: 8, height: 8))
  123. return midBgView
  124. }()
  125. lazy var avatarImageView: UIImageView = {
  126. let avatarImageView = UIImageView()
  127. avatarImageView.image = kImage(name: "default_avatar")
  128. avatarImageView.cornerRadius = 40
  129. avatarImageView.masksToBounds = true
  130. return avatarImageView
  131. }()
  132. lazy var circleButton: UIButton = {
  133. let circleButton = UIButton(type: UIButton.ButtonType.custom)
  134. circleButton.setBackgroundImage(UIImage.imageWithColor(color: kThemeColor), for: UIControl.State.normal)
  135. circleButton.setBackgroundImage(UIImage.imageWithColor(color: .white), for: UIControl.State.selected)
  136. circleButton.setTitle("加入圈子", for: UIControl.State.normal)
  137. circleButton.setTitle("退出圈子", for: UIControl.State.selected)
  138. circleButton.setTitleColor(.white, for: UIControl.State.normal)
  139. circleButton.setTitleColor(kThemeColor, for: UIControl.State.selected)
  140. circleButton.titleLabel?.font = kRegularFont14
  141. circleButton.layer.borderColor = kThemeColor.cgColor
  142. circleButton.layer.borderWidth = 1
  143. circleButton.cornerRadius = 15
  144. circleButton.masksToBounds = true
  145. return circleButton
  146. }()
  147. lazy var chatRootButton: UIButton = {
  148. let chatRootButton = UIButton(type: UIButton.ButtonType.custom)
  149. chatRootButton.setBackgroundImage(UIImage.imageWithColor(color: .white), for: UIControl.State.normal)
  150. chatRootButton.setTitle("聊天室", for: UIControl.State.normal)
  151. chatRootButton.setTitleColor(k584F60Color, for: UIControl.State.normal)
  152. chatRootButton.titleLabel?.font = kRegularFont14
  153. chatRootButton.layer.borderColor = k584F60Color.cgColor
  154. chatRootButton.layer.borderWidth = 1
  155. chatRootButton.cornerRadius = 15
  156. chatRootButton.masksToBounds = true
  157. return chatRootButton
  158. }()
  159. lazy var memberNameLabel: UILabel = {
  160. let memberNameLabel = UILabel()
  161. memberNameLabel.text = "成员"
  162. memberNameLabel.textColor = .black
  163. memberNameLabel.font = kRegularFont14
  164. return memberNameLabel
  165. }()
  166. lazy var memberNumberLabel: UILabel = {
  167. let memberNumberLabel = UILabel()
  168. memberNumberLabel.text = "0"
  169. memberNumberLabel.textColor = .black
  170. memberNumberLabel.font = kMediumFont16
  171. return memberNumberLabel
  172. }()
  173. lazy var albumNameLabel: UILabel = {
  174. let albumNameLabel = UILabel()
  175. albumNameLabel.text = "相册"
  176. albumNameLabel.textColor = .black
  177. albumNameLabel.font = kRegularFont14
  178. return albumNameLabel
  179. }()
  180. lazy var albumNumberLabel: UILabel = {
  181. let albumNumberLabel = UILabel()
  182. albumNumberLabel.text = "0"
  183. albumNumberLabel.textColor = .black
  184. albumNumberLabel.font = kMediumFont16
  185. return albumNumberLabel
  186. }()
  187. var communityCircleModel :CommunityCircleModel? {
  188. didSet {
  189. bgImageView.kf.setImage(with: kURLImage(name: communityCircleModel?.image ?? "default_pic"), placeholder: kImage(name: "default_pic"))
  190. titleLabel.text = communityCircleModel?.name
  191. avatarImageView.kf.setImage(with: kURLImage(name: communityCircleModel?.image ?? "default_avatar"), placeholder: kImage(name: "default_avatar"))
  192. memberNumberLabel.text = communityCircleModel?.members?.extra
  193. albumNumberLabel.text = communityCircleModel?.pictures?.extra
  194. if communityCircleModel?.isJoin == 0 {
  195. circleButton.isSelected = false
  196. }else if communityCircleModel?.isJoin == 1 {
  197. circleButton.isSelected = true
  198. }
  199. }
  200. }
  201. /// 验证聊天室是否开启了
  202. func userChatroomValidRoomApi() {
  203. SwiftMoyaNetWorkServiceUser.shared().userChatroomValidRoomApi(ChatroomId: communityCircleModel?.chatroom?.extra ?? "0") { [weak self] data in
  204. Mediator.push(RongCloudIMRouterModuleType.IMChatRoom(targetId: self?.communityCircleModel?.chatroom?.extra ?? "0", messageCount: 50, roomName: self?.communityCircleModel?.name ?? ""))
  205. }
  206. }
  207. /// 加入圈子
  208. func communityCircleJoinPostApi() {
  209. SwiftMoyaNetWorkServiceCommunity.shared().communityCircleJoinPostApi(circleId: communityCircleModel?.id ?? 0) {[weak self] (_) -> (Void) in
  210. self?.joinSuccess()
  211. }
  212. }
  213. /// 退出圈子
  214. func communityCircleJoinDeleteApi() {
  215. SwiftMoyaNetWorkServiceCommunity.shared().communityCircleJoinDeleteApi(circleId: communityCircleModel?.id ?? 0) {[weak self] (_) -> (Void) in
  216. self?.dropOutSuccess()
  217. }
  218. }
  219. /// 加入圈子
  220. func joinSuccess() {
  221. self.circleButton.isSelected = true
  222. self.communityCircleModel?.isJoin = 1
  223. SwiftProgressHUD.shared().showText("加入圈子成功")
  224. self.communityCircleModel?.members?.extra = "\(Int(self.communityCircleModel?.members?.extra ?? "0")! + 1)"
  225. self.memberNumberLabel.text = self.communityCircleModel?.members?.extra
  226. }
  227. /// 退出圈子
  228. func dropOutSuccess() {
  229. self.circleButton.isSelected = false
  230. self.communityCircleModel?.isJoin = 0
  231. SwiftProgressHUD.shared().showText("退出圈子成功")
  232. self.communityCircleModel?.members?.extra = "\(Int(self.communityCircleModel?.members?.extra ?? "1")! - 1)"
  233. self.memberNumberLabel.text = self.communityCircleModel?.members?.extra
  234. }
  235. func scrollViewDidScroll(contentOffsetY: CGFloat) {
  236. if contentOffsetY < 0 {
  237. var frame = imageViewFrame
  238. frame.size.height -= contentOffsetY
  239. frame.origin.y = contentOffsetY
  240. bgImageView.frame = frame
  241. bgView.frame = frame
  242. }
  243. }
  244. }