YMRankingListTopThreeUserView.m 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. //
  2. // YMRankingListTopThreeUserView.m
  3. // MSYOUPAI
  4. //
  5. // Created by YoMi on 2024/2/14.
  6. // Copyright © 2024 MS. All rights reserved.
  7. //
  8. #import "YMRankingListTopThreeUserView.h"
  9. @interface YMRankingListTopThreeUserView()
  10. /// 排行榜VM
  11. @property (nonatomic, strong) YMRankingListCellViewModel *viewModel;
  12. /// 头像视图
  13. @property (nonatomic, strong) UIImageView *avatarView;
  14. /// 挂件视图
  15. @property (nonatomic, strong) UIImageView *pendantView;
  16. /// 用户昵称标签
  17. @property (nonatomic, strong) UILabel *userNicknameLb;
  18. /// 用户排名差异标签
  19. @property (nonatomic, strong) UILabel *userRankingDifferenceLb;
  20. @end
  21. @implementation YMRankingListTopThreeUserView
  22. - (void)ym_setupViews{
  23. self.avatarSize = 64;
  24. [self addSubview:self.avatarView];
  25. [self addSubview:self.pendantView];
  26. [self addSubview:self.userNicknameLb];
  27. [self addSubview:self.userRankingDifferenceLb];
  28. [self setNeedsUpdateConstraints];
  29. [self updateConstraintsIfNeeded];
  30. }
  31. - (void)updateConstraints{
  32. [self.avatarView mas_makeConstraints:^(MASConstraintMaker *make) {
  33. make.centerX.equalTo(self.pendantView.mas_centerX);
  34. make.centerY.equalTo(self.pendantView.mas_centerY);
  35. make.width.height.mas_equalTo(self.avatarSize);
  36. }];
  37. [self.pendantView mas_makeConstraints:^(MASConstraintMaker *make) {
  38. make.top.equalTo(self);
  39. make.left.equalTo(self).offset(adapt(15));
  40. make.right.equalTo(self).offset(adapt(-15));
  41. make.width.mas_equalTo(self.avatarSize + adapt(19));
  42. make.height.mas_equalTo(self.avatarSize + adapt(19));
  43. }];
  44. [self.userNicknameLb mas_makeConstraints:^(MASConstraintMaker *make) {
  45. make.top.equalTo(self.pendantView.mas_bottom).offset(adapt(10));
  46. make.left.equalTo(self);
  47. make.right.equalTo(self);
  48. make.height.mas_equalTo(adapt(20));
  49. }];
  50. [self.userRankingDifferenceLb mas_makeConstraints:^(MASConstraintMaker *make) {
  51. make.top.equalTo(self.userNicknameLb.mas_bottom).offset(adapt(5));
  52. make.left.equalTo(self);
  53. make.right.equalTo(self);
  54. make.bottom.equalTo(self);
  55. make.height.mas_equalTo(adapt(15));
  56. }];
  57. [super updateConstraints];
  58. }
  59. - (void)ym_bindViewModel:(YMRankingListCellViewModel*)viewModel{
  60. if (!viewModel) {
  61. return;
  62. }
  63. _viewModel = viewModel;
  64. @weakify(self)
  65. [[[[RACObserve(self.viewModel, rankingUserAvatar) distinctUntilChanged] deliverOnMainThread] takeUntil:self.rac_willDeallocSignal] subscribeNext:^(NSString * rankingUserAvatar) {
  66. @strongify(self)
  67. if (!OCStringIsEmpty(rankingUserAvatar)) {
  68. [self.avatarView sd_setImageWithURL:[LCTools getImageUrlWithAddress:rankingUserAvatar]];
  69. }
  70. }];
  71. [[[[RACObserve(self.viewModel, rankingUserNickname) distinctUntilChanged] deliverOnMainThread] takeUntil:self.rac_willDeallocSignal] subscribeNext:^(NSString * rankingUserNickname) {
  72. @strongify(self)
  73. if (!OCStringIsEmpty(rankingUserNickname)) {
  74. self.userNicknameLb.text = rankingUserNickname;
  75. }
  76. }];
  77. [[[[RACObserve(self.viewModel, rankingUserRankingDifference) distinctUntilChanged] deliverOnMainThread] takeUntil:self.rac_willDeallocSignal] subscribeNext:^(NSString * rankingUserRankingDifference) {
  78. @strongify(self)
  79. if (!OCStringIsEmpty(rankingUserRankingDifference)) {
  80. self.userRankingDifferenceLb.text = rankingUserRankingDifference;
  81. }
  82. }];
  83. }
  84. - (void)setPendantImage:(UIImage *)pendantImage{
  85. _pendantImage = pendantImage;
  86. _pendantView.image = pendantImage;
  87. }
  88. - (void)setAvatarSize:(CGFloat)avatarSize{
  89. _avatarSize = avatarSize;
  90. }
  91. - (UIImageView *)avatarView{
  92. if (!_avatarView) {
  93. _avatarView = [[UIImageView alloc]init];
  94. _avatarView.contentMode = UIViewContentModeScaleAspectFill;
  95. _avatarView.backgroundColor = UIColor.lightGrayColor;
  96. [_avatarView addRectCorner:UIRectCornerAllCorners radius:self.avatarSize/2];
  97. }
  98. return _avatarView;
  99. }
  100. - (UIImageView *)pendantView{
  101. if (!_pendantView) {
  102. _pendantView = [[UIImageView alloc]init];
  103. }
  104. return _pendantView;
  105. }
  106. - (UILabel *)userNicknameLb{
  107. if (!_userNicknameLb) {
  108. _userNicknameLb = [[UILabel alloc]init];
  109. _userNicknameLb.font = LCBoldFont(14);
  110. _userNicknameLb.textColor = HexColorFromRGB(0x000000);
  111. _userNicknameLb.textAlignment = NSTextAlignmentCenter;
  112. _userNicknameLb.text = @"******";
  113. }
  114. return _userNicknameLb;
  115. }
  116. - (UILabel *)userRankingDifferenceLb{
  117. if (!_userRankingDifferenceLb) {
  118. _userRankingDifferenceLb = [[UILabel alloc]init];
  119. _userRankingDifferenceLb.font = LCFont(10);
  120. _userRankingDifferenceLb.textColor = HexColorFromRGBA(0x000000,0.5);
  121. _userRankingDifferenceLb.textAlignment = NSTextAlignmentCenter;
  122. _userRankingDifferenceLb.text = @"距离上一名: ****";
  123. }
  124. return _userRankingDifferenceLb;
  125. }
  126. @end