YMFriendsListCell.m 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. //
  2. // YMFriendsListCell.m
  3. // MSYOUPAI
  4. //
  5. // Created by YoMi on 2024/3/1.
  6. // Copyright © 2024 MS. All rights reserved.
  7. //
  8. #import "YMFriendsListCell.h"
  9. #import "YMFriendsListCellViewModel.h"
  10. @interface YMFriendsListCell ()
  11. /// 好友VM
  12. @property (nonatomic, strong) YMFriendsListCellViewModel *viewModel;
  13. /// 基础视图
  14. @property (nonatomic, strong) UIView *baseView;
  15. /// 提醒视图
  16. @property (nonatomic, strong) UIView *reminderView;
  17. /// 用户头像视图
  18. @property (nonatomic, strong) UIImageView *userAvatarView;
  19. /// 用户昵称标签
  20. @property (nonatomic, strong) UILabel *userNicknameLb;
  21. /// 用户描述标签
  22. @property (nonatomic, strong) UILabel *userDescLb;
  23. /// 关注按钮
  24. @property (nonatomic, strong) UIButton *followBtn;
  25. @end
  26. @implementation YMFriendsListCell
  27. - (void)awakeFromNib {
  28. [super awakeFromNib];
  29. // Initialization code
  30. }
  31. - (void)setSelected:(BOOL)selected animated:(BOOL)animated {
  32. [super setSelected:selected animated:animated];
  33. // Configure the view for the selected state
  34. }
  35. - (void)ym_setupViews{
  36. [self.contentView addSubview:self.baseView];
  37. [self.baseView addSubview:self.reminderView];
  38. [self.baseView addSubview:self.userAvatarView];
  39. [self.baseView addSubview:self.userNicknameLb];
  40. [self.baseView addSubview:self.userDescLb];
  41. [self.baseView addSubview:self.followBtn];
  42. [self setNeedsUpdateConstraints];
  43. [self updateConstraintsIfNeeded];
  44. }
  45. - (void)updateConstraints{
  46. [self.baseView mas_makeConstraints:^(MASConstraintMaker *make) {
  47. make.top.equalTo(self.contentView);
  48. make.left.equalTo(self.contentView);
  49. make.right.equalTo(self.contentView);
  50. make.bottom.equalTo(self.contentView);
  51. }];
  52. [self.reminderView mas_makeConstraints:^(MASConstraintMaker *make) {
  53. make.centerY.equalTo(self.baseView.mas_centerY);
  54. make.left.equalTo(self.baseView).offset(adapt(5));
  55. make.width.height.mas_equalTo(adapt(8));
  56. }];
  57. [self.userAvatarView mas_makeConstraints:^(MASConstraintMaker *make) {
  58. make.centerY.equalTo(self.baseView.mas_centerY);
  59. make.left.equalTo(self.reminderView.mas_right).offset(adapt(10));
  60. make.width.height.mas_equalTo(adapt(50));
  61. }];
  62. [self.userNicknameLb mas_makeConstraints:^(MASConstraintMaker *make) {
  63. make.bottom.equalTo(self.userAvatarView.mas_centerY).offset(adapt(-5));
  64. make.left.equalTo(self.userAvatarView.mas_right).offset(adapt(16));
  65. }];
  66. [self.userDescLb mas_makeConstraints:^(MASConstraintMaker *make) {
  67. make.top.equalTo(self.userAvatarView.mas_centerY).offset(adapt(5));
  68. make.left.equalTo(self.userAvatarView.mas_right).offset(adapt(16));
  69. }];
  70. [self.followBtn mas_makeConstraints:^(MASConstraintMaker *make) {
  71. make.centerY.equalTo(self.baseView.mas_centerY);
  72. make.right.equalTo(self.baseView).offset(adapt(-12));
  73. make.width.mas_equalTo(adapt(60));
  74. make.height.mas_equalTo(adapt(28));
  75. }];
  76. [super updateConstraints];
  77. }
  78. - (void)ym_bindViewModel:(YMFriendsListCellViewModel *)viewModel{
  79. if (!viewModel) {
  80. return;
  81. }
  82. _viewModel = viewModel;
  83. self.reminderView.hidden = self.viewModel.isHideReminder;
  84. [self.userAvatarView sd_setImageWithURL:[LCTools getImageUrlWithAddress:self.viewModel.userAvatar]];
  85. self.userNicknameLb.text = self.viewModel.userNickname;
  86. self.userDescLb.text = self.viewModel.userDesc;
  87. if (!self.viewModel.isFollow) {
  88. [self.followBtn setTitle:@"关注" forState:UIControlStateNormal];
  89. self.followBtn.backgroundColor = HexColorFromRGB(0xF888E7);
  90. }else{
  91. if (!self.viewModel.isMutualConcerns) {
  92. [self.followBtn setTitle:@"已关注" forState:UIControlStateNormal];
  93. }else{
  94. [self.followBtn setTitle:@"已互关" forState:UIControlStateNormal];
  95. }
  96. self.followBtn.backgroundColor = HexColorFromRGB(0xCCCCCC);
  97. }
  98. }
  99. - (UIView *)baseView{
  100. if (!_baseView) {
  101. _baseView = [[UIView alloc]init];
  102. }
  103. return _baseView;
  104. }
  105. - (UIView *)reminderView{
  106. if (!_reminderView) {
  107. _reminderView = [[UIView alloc]init];
  108. _reminderView.backgroundColor = HexColorFromRGB(0xfd7bc5);
  109. _reminderView.layer.cornerRadius = adapt(8)/2;
  110. }
  111. return _reminderView;
  112. }
  113. - (UIImageView *)userAvatarView{
  114. if (!_userAvatarView) {
  115. _userAvatarView = [[UIImageView alloc]init];
  116. _userAvatarView.backgroundColor = UIColor.lightGrayColor;
  117. _userAvatarView.layer.cornerRadius = adapt(50)/2;
  118. _userAvatarView.layer.masksToBounds = YES;
  119. }
  120. return _userAvatarView;
  121. }
  122. - (UILabel *)userNicknameLb{
  123. if (!_userNicknameLb) {
  124. _userNicknameLb = [[UILabel alloc]init];
  125. _userNicknameLb.font = LCBoldFont(15);
  126. _userNicknameLb.textColor = HexColorFromRGB(0x1B2739);
  127. _userNicknameLb.textAlignment = NSTextAlignmentLeft;
  128. _userNicknameLb.text = @"******";
  129. }
  130. return _userNicknameLb;
  131. }
  132. - (UILabel *)userDescLb{
  133. if (!_userDescLb) {
  134. _userDescLb = [[UILabel alloc]init];
  135. _userDescLb.font = LCFont(12);
  136. _userDescLb.textColor = HexColorFromRGB(0x7E848D);
  137. _userDescLb.textAlignment = NSTextAlignmentLeft;
  138. _userDescLb.text = @"*****";
  139. }
  140. return _userDescLb;
  141. }
  142. - (UIButton *)followBtn{
  143. if (!_followBtn) {
  144. _followBtn = [UIButton buttonWithType:UIButtonTypeCustom];
  145. _followBtn.titleLabel.font = LCFont(13);
  146. [_followBtn setTitle:@"关注" forState:UIControlStateNormal];
  147. [_followBtn setTitleColor:HexColorFromRGB(0xFFFFFF) forState:UIControlStateNormal];
  148. _followBtn.backgroundColor = HexColorFromRGB(0xF888E7);
  149. _followBtn.layer.cornerRadius = adapt(8);
  150. WS(weakSelf)
  151. [[[_followBtn rac_signalForControlEvents:UIControlEventTouchUpInside] takeUntil:self.rac_willDeallocSignal] subscribeNext:^(__kindof UIButton * _Nullable sender) {
  152. [weakSelf.viewModel followUser];
  153. }];
  154. }
  155. return _followBtn;
  156. }
  157. @end