123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271 |
- //
- // PersonViewUserAndOtherHeaderView.swift
- // RainbowPlanet
- //
- // Created by 南鑫林 on 2019/6/17.
- // Copyright © 2019 RainbowPlanet. All rights reserved.
- //
- import UIKit
- import Kingfisher
- /// 用户类型
- ///
- /// - user: 自己
- /// - other: 其他类型
- enum PersonViewUserAndOtherHeaderViewType {
- case user
- case other
- }
- class PersonViewUserAndOtherHeaderView: BaseView {
- var imageViewFrame = CGRect(x: 0, y: 0, width: kScreenWidth, height: 140 + kNavBarTotalHeight)
- var personViewUserAndOtherHeaderViewType : PersonViewUserAndOtherHeaderViewType? {
- didSet {
- if personViewUserAndOtherHeaderViewType == .user {
- followButton.isHidden = true
- editButton.isHidden = false
- }else {
- followButton.isHidden = false
- editButton.isHidden = true
- }
- }
- }
- override func setupViews() {
- addSubview(bgImageView)
- addSubview(bgView)
- bgView.addSubview(titleLabel)
- bgView.addSubview(subtitleLabel)
- bgView.addSubview(followNumberButton)
- bgView.addSubview(fanNumberButton)
- bgView.addSubview(avatarButton)
- bgView.addSubview(editButton)
- bgView.addSubview(followButton)
- }
-
- override func setupLayouts() {
- titleLabel.snp_makeConstraints { (make) in
- make.bottom.equalTo(subtitleLabel.snp_top).offset(-10)
- make.left.equalTo(14)
- make.right.equalTo(avatarButton.snp.left).offset(-15)
- }
- subtitleLabel.snp_makeConstraints { (make) in
- make.bottom.equalTo(followNumberButton.snp_top).offset(-30)
- make.left.equalTo(14)
- make.right.equalTo(-100)
- }
- followNumberButton.snp_makeConstraints { (make) in
- make.bottom.equalTo(-23)
- make.left.equalTo(14)
- make.height.equalTo(20)
- }
- fanNumberButton.snp_makeConstraints { (make) in
- make.centerY.height.equalTo(followNumberButton)
- make.left.equalTo(followNumberButton.snp_right).offset(20)
- }
- avatarButton.snp_makeConstraints { (make) in
- make.bottom.equalTo(-66)
- make.right.equalTo(-20)
- make.size.equalTo(60)
- }
- editButton.snp_makeConstraints { (make) in
- make.centerX.equalTo(avatarButton)
- make.bottom.equalTo(-23)
- make.width.equalTo(64)
- make.height.equalTo(24)
- }
- followButton.snp_makeConstraints { (make) in
- make.centerX.equalTo(avatarButton)
- make.bottom.equalTo(-23)
- make.width.equalTo(60)
- make.height.equalTo(28)
- }
-
- }
-
- private lazy var bgImageView: UIImageView = {
- let bgImageView = UIImageView(frame: CGRect(x: 0, y: 0, width: kScreenWidth, height: 140 + kNavBarTotalHeight))
- bgImageView.image = kImage(name: "default_pic")
- bgImageView.contentMode = .scaleAspectFill
- bgImageView.layer.masksToBounds = true
- return bgImageView
- }()
-
- private lazy var bgView: UIView = {
- let bgView = UIView(frame: CGRect(x: 0, y: 0, width: kScreenWidth, height: 140 + kNavBarTotalHeight))
- bgView.backgroundColor = UIColor(hexString: "000000", alpha: 0.5)
- return bgView
- }()
-
- private lazy var titleLabel: UILabel = {
- let titleLabel = UILabel()
- titleLabel.text = "昵称"
- titleLabel.textColor = .white
- titleLabel.font = kBoldFont18
- return titleLabel
- }()
-
- private lazy var subtitleLabel: UILabel = {
- let subtitleLabel = UILabel()
- subtitleLabel.text = "添加个人介绍,认识更多老板~"
- subtitleLabel.textColor = kbbbbbbColor
- subtitleLabel.font = kRegularFont10
- return subtitleLabel
- }()
-
- private lazy var followNumberButton: UIButton = {
- let followNumberButton = UIButton(type: UIButton.ButtonType.custom)
- followNumberButton.setTitleColor(kf0f0f0Color, for: UIControl.State.normal)
- followNumberButton.titleLabel?.font = kBoldFont14
- followNumberButton.setTitle("0 关注", for: UIControl.State.normal)
- followNumberButton.rx.tap.subscribe(onNext: {
- [weak self] (data) in
- let vc = MyFollowAndFanViewController()
- vc.myfollowAndFanType = .follow
- vc.userDetailModel = self?.userDetailModel
- if self?.personViewUserAndOtherHeaderViewType == .user {
- vc.navigationBar.title = "我的关注"
- }else {
- vc.navigationBar.title = "TA关注"
- }
- self?.findViewController().navigationController?.pushViewController(vc, animated: true)
-
- }).disposed(by: disposeBag)
- return followNumberButton
- }()
-
- private lazy var fanNumberButton: UIButton = {
- let fanNumberButton = UIButton(type: UIButton.ButtonType.custom)
- fanNumberButton.setTitleColor(kf0f0f0Color, for: UIControl.State.normal)
- fanNumberButton.titleLabel?.font = kBoldFont14
- fanNumberButton.setTitle("0 粉丝", for: UIControl.State.normal)
- fanNumberButton.rx.tap.subscribe(onNext: {
- [weak self] (data) in
- let vc = MyFollowAndFanViewController()
- vc.myfollowAndFanType = .fan
- vc.userDetailModel = self?.userDetailModel
- if self?.personViewUserAndOtherHeaderViewType == .user {
- vc.navigationBar.title = "我的粉丝"
- }else {
- vc.navigationBar.title = "TA粉丝"
- }
- self?.findViewController().navigationController?.pushViewController(vc, animated: true)
- }).disposed(by: disposeBag)
- return fanNumberButton
- }()
-
- private lazy var avatarButton: UIButton = {
- let avatarButton = UIButton(type: UIButton.ButtonType.custom)
- avatarButton.setBackgroundImage(kImage(name: "default_avatar"), for: UIControl.State.normal)
- avatarButton.cornerRadius = 30
- avatarButton.masksToBounds = true
- avatarButton.rx.tap.subscribe(onNext: {[weak self] (data) in
- let currentVC = avatarButton.findViewController() as? BaseViewController
- let vc = BrowsePicturesViewController.init(images: [avatarButton.currentBackgroundImage!], index: 0)
- currentVC?.navigationController?.pushViewController(vc, animated: true)
- }).disposed(by: disposeBag)
- return avatarButton
- }()
-
- lazy var followButton: UIButton = {
- let followButton = UIButton(type: UIButton.ButtonType.custom)
- followButton.setTitle("关注", for: UIControl.State.normal)
- followButton.titleLabel?.font = kMediumFont13
- followButton.alpha = 1
- followButton.cornerRadius = 14
- followButton.masksToBounds = true
- followButton.isHidden = true
- followButton.rx.tap.subscribe(onNext: {
- [weak self] (data) in
- if self?.userDetailModel?.isFollowStatus == 0 {
- self?.userFollow(followUid: self?.userDetailModel?.uid ?? 0, completion: { [weak self,weak followButton] (isFollowStatus) in
- self?.userDetailModel?.isFollowStatus = isFollowStatus
- CommunityFollowUserViewModel.setMineFollowType(followButton: followButton!, followType: FollowType(rawValue: self?.userDetailModel?.isFollowStatus ?? 0)!)
- })
- }else {
- self?.userCancelFollow(followUid: self?.userDetailModel?.uid ?? 0, completion: { [weak self,weak followButton] (isFollowStatus) in
- self?.userDetailModel?.isFollowStatus = isFollowStatus
- CommunityFollowUserViewModel.setMineFollowType(followButton: followButton!, followType: FollowType(rawValue: self?.userDetailModel?.isFollowStatus ?? 0)!)
- })
- }
- }).disposed(by: disposeBag)
- return followButton
- }()
-
- private lazy var editButton : UIButton = {
- let editButton = UIButton(type: UIButton.ButtonType.custom)
- editButton.cornerRadius = 12
- editButton.masksToBounds = true
- editButton.setTitle("编辑资料", for: UIControl.State.normal)
- editButton.setTitleColor(kffffffColor, for: UIControl.State.normal)
- editButton.titleLabel?.font = kRegularFont12
- editButton.layer.borderColor = kffffffColor.cgColor
- editButton.layer.borderWidth = 1
- editButton.isHidden = true
- editButton.backgroundColor = UIColor.clear
- editButton.rx.tap.subscribe(onNext: {[weak self] (data) in
- let currentVC = editButton.findViewController() as? BaseViewController
- let vc = ModifyDataViewController()
- vc.userDetailModel = self?.userDetailModel
- currentVC?.navigationController?.pushViewController(vc, animated: true)
- }).disposed(by: disposeBag)
- return editButton
- }()
-
-
- func scrollViewDidScroll(contentOffsetY: CGFloat) {
- if contentOffsetY < 0 {
- var frame = imageViewFrame
- frame.size.height -= contentOffsetY
- frame.origin.y = contentOffsetY
- bgImageView.frame = frame
- bgView.frame = frame
- }
- }
-
- var userDetailModel: UserDetailModel? {
- didSet {
- CommunityFollowUserViewModel.setMineFollowType(followButton: followButton, followType: FollowType(rawValue: userDetailModel?.isFollowStatus ?? 0)!)
- bgImageView.kf.setImage(with: kURLImage(name: userDetailModel?.backgroundImg ?? "default_pic"), placeholder: kImage(name: "default_pic"))
- titleLabel.text = userDetailModel?.username
- if userDetailModel?.signature == "" || userDetailModel?.signature == nil {
- if userDetailModel?.uid == UserModel.shared().getModel()?.uid {
- subtitleLabel.text = "添加个人介绍,认识更多老板~"
- }else {
- subtitleLabel.text = "暂无个人介绍"
- }
- }else {
- subtitleLabel.text = userDetailModel?.signature
- }
- followNumberButton.setTitle("\(userDetailModel?.followCount ?? "0") 关注", for: UIControl.State.normal)
- fanNumberButton.setTitle("\(userDetailModel?.fansCount ?? "0") 粉丝", for: UIControl.State.normal)
- avatarButton.kf.setBackgroundImage(with: kURLThumbnailsImage(name: userDetailModel?.avatar ?? "", size: kSize60x60Image), for: UIControl.State.normal, placeholder: kImage(name: "default_avatar"))
- KingfisherManager.shared.cache.clearMemoryCache()
- }
- }
- }
- extension PersonViewUserAndOtherHeaderView {
-
- /// 关注
- func userFollow(followUid:Int,completion: @escaping (Int) -> Void) {
- SwiftMoyaNetWorkServiceUser.shared().userFollowApi(followUid: followUid) {(followStatusModel) -> (Void) in
- let followStatusModel = followStatusModel as? FollowStatusModel
- completion(followStatusModel?.isFollowStatus ?? 0)
- }
- }
-
- /// 取消关注
- func userCancelFollow(followUid:Int,completion: @escaping (Int) -> Void) {
- SwiftMoyaNetWorkServiceUser.shared().userCancelFollowApi(followUid: followUid) {
- (followStatusModel) -> (Void) in
- let followStatusModel = followStatusModel as? FollowStatusModel
- completion(followStatusModel?.isFollowStatus ?? 0)
- }
- }
- }
|