// // YMRankingListTopThreeUserView.m // MSYOUPAI // // Created by YoMi on 2024/2/14. // Copyright © 2024 MS. All rights reserved. // #import "YMRankingListTopThreeUserView.h" @interface YMRankingListTopThreeUserView() /// 排行榜VM @property (nonatomic, strong) YMRankingListCellViewModel *viewModel; /// 头像视图 @property (nonatomic, strong) UIImageView *avatarView; /// 挂件视图 @property (nonatomic, strong) UIImageView *pendantView; /// 用户昵称标签 @property (nonatomic, strong) UILabel *userNicknameLb; /// 用户排名差异标签 @property (nonatomic, strong) UILabel *userRankingDifferenceLb; @end @implementation YMRankingListTopThreeUserView - (void)ym_setupViews{ self.avatarSize = 64; [self addSubview:self.avatarView]; [self addSubview:self.pendantView]; [self addSubview:self.userNicknameLb]; [self addSubview:self.userRankingDifferenceLb]; [self setNeedsUpdateConstraints]; [self updateConstraintsIfNeeded]; } - (void)updateConstraints{ [self.avatarView mas_makeConstraints:^(MASConstraintMaker *make) { make.centerX.equalTo(self.pendantView.mas_centerX); make.centerY.equalTo(self.pendantView.mas_centerY); make.width.height.mas_equalTo(self.avatarSize); }]; [self.pendantView mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self); make.left.equalTo(self).offset(adapt(15)); make.right.equalTo(self).offset(adapt(-15)); make.width.mas_equalTo(self.avatarSize + adapt(19)); make.height.mas_equalTo(self.avatarSize + adapt(19)); }]; [self.userNicknameLb mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.pendantView.mas_bottom).offset(adapt(10)); make.left.equalTo(self); make.right.equalTo(self); make.height.mas_equalTo(adapt(20)); }]; [self.userRankingDifferenceLb mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.userNicknameLb.mas_bottom).offset(adapt(5)); make.left.equalTo(self); make.right.equalTo(self); make.bottom.equalTo(self); make.height.mas_equalTo(adapt(15)); }]; [super updateConstraints]; } - (void)ym_bindViewModel:(YMRankingListCellViewModel*)viewModel{ if (!viewModel) { return; } _viewModel = viewModel; @weakify(self) [[[[RACObserve(self.viewModel, rankingUserAvatar) distinctUntilChanged] deliverOnMainThread] takeUntil:self.rac_willDeallocSignal] subscribeNext:^(NSString * rankingUserAvatar) { @strongify(self) if (!OCStringIsEmpty(rankingUserAvatar)) { [self.avatarView sd_setImageWithURL:[LCTools getImageUrlWithAddress:rankingUserAvatar]]; } }]; [[[[RACObserve(self.viewModel, rankingUserNickname) distinctUntilChanged] deliverOnMainThread] takeUntil:self.rac_willDeallocSignal] subscribeNext:^(NSString * rankingUserNickname) { @strongify(self) if (!OCStringIsEmpty(rankingUserNickname)) { self.userNicknameLb.text = rankingUserNickname; } }]; [[[[RACObserve(self.viewModel, rankingUserRankingDifference) distinctUntilChanged] deliverOnMainThread] takeUntil:self.rac_willDeallocSignal] subscribeNext:^(NSString * rankingUserRankingDifference) { @strongify(self) if (!OCStringIsEmpty(rankingUserRankingDifference)) { self.userRankingDifferenceLb.text = rankingUserRankingDifference; } }]; } - (void)setPendantImage:(UIImage *)pendantImage{ _pendantImage = pendantImage; _pendantView.image = pendantImage; } - (void)setAvatarSize:(CGFloat)avatarSize{ _avatarSize = avatarSize; } - (UIImageView *)avatarView{ if (!_avatarView) { _avatarView = [[UIImageView alloc]init]; _avatarView.contentMode = UIViewContentModeScaleAspectFill; _avatarView.backgroundColor = UIColor.lightGrayColor; [_avatarView addRectCorner:UIRectCornerAllCorners radius:self.avatarSize/2]; } return _avatarView; } - (UIImageView *)pendantView{ if (!_pendantView) { _pendantView = [[UIImageView alloc]init]; } return _pendantView; } - (UILabel *)userNicknameLb{ if (!_userNicknameLb) { _userNicknameLb = [[UILabel alloc]init]; _userNicknameLb.font = LCBoldFont(14); _userNicknameLb.textColor = HexColorFromRGB(0x000000); _userNicknameLb.textAlignment = NSTextAlignmentCenter; _userNicknameLb.text = @"******"; } return _userNicknameLb; } - (UILabel *)userRankingDifferenceLb{ if (!_userRankingDifferenceLb) { _userRankingDifferenceLb = [[UILabel alloc]init]; _userRankingDifferenceLb.font = LCFont(10); _userRankingDifferenceLb.textColor = HexColorFromRGBA(0x000000,0.5); _userRankingDifferenceLb.textAlignment = NSTextAlignmentCenter; _userRankingDifferenceLb.text = @"距离上一名: ****"; } return _userRankingDifferenceLb; } @end