// // XPBlankCollectionViewCell.m // YuMi // // Created by Linus on 2024/12/19. // #import "XPPartyRoomItemCollectionViewCell.h" @interface XPPartyRoomItemCollectionViewCell () @property(nonatomic,strong) NetImageView *avatarView; @property(nonatomic,strong) NetImageView *rankImageView; @property(nonatomic,strong) NetImageView *tagImageView; @property (nonatomic, strong) NetImageView *flagImage; @property (nonatomic,strong) NetImageView *boomImageView; @property(nonatomic,strong) UILabel *nameLabel; @property(nonatomic,strong) UILabel *subLabel; @property(nonatomic,strong) UIImageView *heatIcon; @property(nonatomic,strong) UILabel *heatNumLable; @property (nonatomic, strong) UIImageView *bottomShadow; @end @implementation XPPartyRoomItemCollectionViewCell + (NSString *)blankCellID { return @"blankCellID"; } + (NSString *)itemCellID { return NSStringFromClass([self class]); } - (instancetype)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { self.contentView.backgroundColor = [UIColor clearColor]; self.clipsToBounds = NO; self.contentView.clipsToBounds = NO; [self installUI]; } return self; } - (void)installUI { [self.contentView addSubview:self.avatarView]; [self.avatarView mas_makeConstraints:^(MASConstraintMaker *make) { make.top.mas_equalTo(self.contentView).offset(14); make.leading.trailing.mas_equalTo(self.contentView).inset(8); make.height.mas_equalTo(self.avatarView.mas_width) ; }]; [self.contentView addSubview:self.rankImageView]; [self.rankImageView mas_makeConstraints:^(MASConstraintMaker *make) { make.top.mas_equalTo(self.contentView); make.leading.trailing.mas_equalTo(self.contentView); make.height.mas_equalTo(self.rankImageView.mas_width) ; }]; [self.contentView addSubview:self.tagImageView]; [self.tagImageView mas_makeConstraints:^(MASConstraintMaker *make) { make.top.mas_equalTo(self.avatarView).offset(8); make.trailing.mas_equalTo(self.avatarView).offset(-8); make.height.mas_equalTo(20); make.width.mas_equalTo(60); }]; [self.contentView addSubview:self.flagImage]; [self.flagImage mas_makeConstraints:^(MASConstraintMaker *make) { make.leading.mas_equalTo(self.avatarView.mas_leading); make.top.mas_equalTo(self.avatarView.mas_bottom).offset(8); make.size.mas_equalTo(CGSizeMake(18, 14)); }]; [self.contentView addSubview:self.nameLabel]; [self.nameLabel mas_makeConstraints:^(MASConstraintMaker *make) { make.centerY.mas_equalTo(self.flagImage); make.leading.mas_equalTo(self.flagImage.mas_trailing).offset(4); make.trailing.mas_equalTo(self.avatarView.mas_trailing); }]; [self.contentView addSubview:self.subLabel]; [self.subLabel mas_makeConstraints:^(MASConstraintMaker *make) { make.leading.mas_equalTo(self.avatarView).offset(10); make.bottom.mas_equalTo(self.avatarView).offset(-8); }]; [self.contentView addSubview:self.heatNumLable]; [self.heatNumLable mas_makeConstraints:^(MASConstraintMaker *make) { make.trailing.mas_equalTo(self.avatarView).offset(-10); make.centerY.mas_equalTo(self.subLabel); }]; [self.contentView addSubview:self.heatIcon]; [self.heatIcon mas_makeConstraints:^(MASConstraintMaker *make) { make.centerY.mas_equalTo(self.subLabel); make.trailing.mas_equalTo(self.heatNumLable.mas_leading).offset(2); make.size.mas_equalTo(CGSizeMake(15, 15)); }]; [self.contentView addSubview:self.boomImageView]; [self.boomImageView mas_makeConstraints:^(MASConstraintMaker *make) { make.trailing.mas_equalTo(self.heatNumLable); make.bottom.mas_equalTo(self.heatNumLable.mas_top).offset(-8); make.size.mas_equalTo(CGSizeMake(25, 37)); }]; [self.contentView insertSubview:self.bottomShadow belowSubview:self.rankImageView]; [self.bottomShadow mas_makeConstraints:^(MASConstraintMaker *make) { make.bottom.leading.trailing.mas_equalTo(self.avatarView); make.height.mas_equalTo(kGetScaleWidth(34)); }]; } - (void)setRoomInfo:(HomePlayRoomModel *)roomInfo { _roomInfo = roomInfo; self.avatarView.imageUrl = roomInfo.avatar; if (roomInfo.hourTop > 0) { NSString *name = [NSString stringWithFormat:@"room_level_top_%ld", (long)roomInfo.hourTop]; self.rankImageView.image = [UIImage getLanguageImage:name]; } else { self.rankImageView.image = nil; } if (roomInfo.roomBoom) { self.boomImageView.hidden = NO; self.boomImageView.imageUrl = [roomInfo roomBoomPic]; } else { self.boomImageView.hidden = YES; } self.flagImage.imageUrl = roomInfo.regionFlag; self.flagImage.hidden = [NSString isEmpty:roomInfo.regionFlag]; self.heatNumLable.text = [NSString isEmpty:roomInfo.hotValue.stringValue] ? @"0" : @(roomInfo.hotValue.integerValue).stringValue; [self updateRoomName]; [self updateSubTitleAndTag]; } - (void)updateRoomName { NSString *title = self.roomInfo.title; switch (self.roomInfo.homeRoomType) { case 1:{ NSTextAttachment *attach = [[NSTextAttachment alloc] init]; attach.image = kImage(@"room_type_rd"); attach.bounds = CGRectMake(0, 2, 14, 14); NSAttributedString *attachString = [NSAttributedString attributedStringWithAttachment:attach]; NSAttributedString *titleString = [[NSAttributedString alloc] initWithString:title attributes:@{ NSFontAttributeName: kFontSemibold(15), NSForegroundColorAttributeName: UIColorFromRGB(0x313131) }]; NSMutableAttributedString *ms = [[NSMutableAttributedString alloc] initWithAttributedString:titleString]; [ms insertAttributedString:attachString atIndex:0]; self.nameLabel.attributedText = ms; } break; case 2: { NSTextAttachment *attach = [[NSTextAttachment alloc] init]; attach.image = kImage(@"room_type_cs"); attach.bounds = CGRectMake(0, 2, 14, 14); NSAttributedString *attachString = [NSAttributedString attributedStringWithAttachment:attach]; NSAttributedString *titleString = [[NSAttributedString alloc] initWithString:title attributes:@{ NSFontAttributeName: kFontSemibold(15), NSForegroundColorAttributeName: UIColorFromRGB(0x313131) }]; NSMutableAttributedString *ms = [[NSMutableAttributedString alloc] initWithAttributedString:titleString]; [ms insertAttributedString:attachString atIndex:0]; _nameLabel.attributedText = ms; } break; default: _nameLabel.text = _roomInfo.title; break; } } - (void)updateSubTitleAndTag { if ([NSString isEmpty:self.roomInfo.tagPict]) { self.subLabel.text = self.roomInfo.roomDesc.length > 0 ? self.roomInfo.roomDesc : YMLocalizedString(@"XPHomeMineViewController3"); self.tagImageView.hidden = YES; } else { @kWeakify(self); [self.tagImageView loadImageWithUrl:self.roomInfo.tagPict completion:^(UIImage * _Nullable image, NSURL * _Nonnull url) { @kStrongify(self); if (image) { self.tagImageView.hidden = NO; self.tagImageView.image = image; CGFloat width = kGetScaleWidth(62); if (image.size.height > 0){ width = image.size.width * kGetScaleWidth(19) / image.size.height; } [self.tagImageView mas_updateConstraints:^(MASConstraintMaker *make) { make.width.mas_equalTo(width); }]; [self layoutIfNeeded]; } else { self.tagImageView.hidden = YES; } self.subLabel.text = [NSString stringWithFormat:@" %@", self.roomInfo.roomDesc.length > 0 ? self.roomInfo.roomDesc : YMLocalizedString(@"XPHomeMineViewController3")]; }]; } } #pragma mark - - (NetImageView *)avatarView{ if(!_avatarView){ NetImageConfig *config = [[NetImageConfig alloc]init]; config.placeHolder = [UIImageConstant defaultEmptyAvatarPlaceholder]; _avatarView = [[NetImageView alloc]initWithConfig:config]; _avatarView.contentMode = UIViewContentModeScaleAspectFill; [_avatarView setCornerRadius:12]; } return _avatarView; } - (NetImageView *)rankImageView{ if(!_rankImageView){ _rankImageView = [NetImageView new]; } return _rankImageView; } - (NetImageView *)tagImageView{ if(!_tagImageView){ _tagImageView = [NetImageView new]; } return _tagImageView; } - (NetImageView *)boomImageView{ if(!_boomImageView){ _boomImageView = [NetImageView new]; _boomImageView.contentMode = UIViewContentModeScaleAspectFit; } return _boomImageView; } - (NetImageView *)flagImage{ if(!_flagImage){ _flagImage = [NetImageView new]; _flagImage.contentMode = UIViewContentModeScaleAspectFit; } return _flagImage; } - (UILabel *)nameLabel{ if(!_nameLabel){ _nameLabel = [UILabel labelInitWithText:@"" font:kFontMedium(15) textColor:UIColorFromRGB(0x1E1E1F)]; _nameLabel.adjustsFontSizeToFitWidth = YES; _nameLabel.minimumScaleFactor = 0.5; } return _nameLabel; } - (UILabel *)subLabel{ if(!_subLabel){ _subLabel = [UILabel labelInitWithText:@"" font:kFontRegular(13) textColor:[UIColor whiteColor]]; } return _subLabel; } - (UIImageView *)heatIcon{ if(!_heatIcon){ _heatIcon = [UIImageView new]; _heatIcon.image = kImage(@"ms_home_heat_icon"); } return _heatIcon; } -(UILabel *)heatNumLable{ if(!_heatNumLable){ _heatNumLable = [UILabel labelInitWithText:@"0" font:kFontMedium(12) textColor:[UIColor whiteColor]]; _heatNumLable.textAlignment = NSTextAlignmentRight; } return _heatNumLable; } - (UIImageView *)bottomShadow { if (!_bottomShadow) { _bottomShadow = [[UIImageView alloc] initWithImage:kImage(@"room_bottom_shadow")]; } return _bottomShadow; } @end