Files
yinmeng-ios/xplan-ios/Main/Home/View/Cell/XPHomeListCollectionViewCell.m
2022-04-20 15:39:29 +08:00

235 lines
7.1 KiB
Objective-C

//
// XPHomeListCollectionViewCell.m
// xplan-ios
//
// Created by 冯硕 on 2021/11/29.
//
#import "XPHomeListCollectionViewCell.h"
///Third
#import <Masonry/Masonry.h>
///Tool
#import "ThemeColor.h"
#import "UIImage+Utils.h"
#import <SVGA.h>
///Model
#import "HomeRecommendRoomModel.h"
///View
#import "NetImageView.h"
#import "XPNoteView.h"
@interface XPHomeListCollectionViewCell ()
///头像
@property (nonatomic,strong) NetImageView *avatarImageView;
///底部的view
@property (nonatomic,strong) UIView * bottomView;
///名字
@property (nonatomic,strong) UILabel *nickLabel;
///类型
@property (nonatomic,strong) NetImageView *tagImageView;
///背景图
@property (nonatomic,strong) UIImageView *shadowImageView;
///在线人数的容器
@property (nonatomic,strong) UIImageView * noteContainImageView;
///音符
@property (nonatomic,strong) XPNoteView *noteView;
///在线人数的
@property (nonatomic,strong) UILabel *numberLabel;
///动画管理类
@property (strong, nonatomic) SVGAParser *parser;
///PK中动图
@property (nonatomic, strong) SVGAImageView *svgDisplayView;
@end
@implementation XPHomeListCollectionViewCell
- (instancetype)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
[self initSubViews];
[self initSubViewConstraints];
}
return self;
}
#pragma mark - Private Method
- (void)initSubViews {
[self.contentView addSubview:self.avatarImageView];
[self.contentView addSubview:self.tagImageView];
[self.contentView addSubview:self.svgDisplayView];
[self.contentView addSubview:self.shadowImageView];
[self.contentView addSubview:self.noteContainImageView];
[self.contentView addSubview:self.bottomView];
[self.bottomView addSubview:self.nickLabel];
[self.noteContainImageView addSubview:self.noteView];
[self.noteContainImageView addSubview:self.numberLabel];
}
- (void)initSubViewConstraints {
[self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.top.mas_equalTo(self.contentView);
make.height.mas_equalTo(157);
}];
[self.tagImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.size.mas_equalTo(CGSizeMake(43, 18));
make.left.top.mas_equalTo(self.contentView);
}];
[self.svgDisplayView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.top.mas_equalTo(self.contentView);
make.size.mas_equalTo(CGSizeMake(40, 20));
}];
[self.noteContainImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.bottom.mas_equalTo(self.avatarImageView).offset(-5);
make.left.mas_equalTo(self.noteView).offset(-3);
make.right.mas_equalTo(self.avatarImageView).offset(-5);
make.height.mas_equalTo(16);
}];
[self.shadowImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.bottom.mas_equalTo(self.avatarImageView);
make.height.mas_equalTo(50);
}];
[self.noteView mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.mas_equalTo(10);
make.height.mas_equalTo(10);
make.centerY.mas_equalTo(self.noteContainImageView);
make.right.mas_equalTo(self.numberLabel.mas_left).offset(-2);
}];
[self.numberLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.mas_equalTo(self.noteContainImageView.mas_right).offset(-2);
make.centerY.mas_equalTo(self.noteContainImageView);
}];
[self.bottomView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.bottom.mas_equalTo(self.contentView);
make.top.mas_equalTo(self.avatarImageView.mas_bottom);
}];
[self.nickLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.centerY.mas_equalTo(self.bottomView);
}];
}
#pragma mark - Getters And Setters
- (void)setRoomModel:(HomeRecommendRoomModel *)roomModel {
_roomModel = roomModel;
if (_roomModel) {
self.avatarImageView.imageUrl = _roomModel.avatar;
self.nickLabel.text = _roomModel.title.length > 0 ? _roomModel.title : @"";
self.numberLabel.text = [NSString stringWithFormat:@"%ld", _roomModel.onlineNum];
self.tagImageView.imageUrl = _roomModel.tagPict;
if (roomModel.crossPking) {
self.tagImageView.hidden = YES;
self.svgDisplayView.hidden = NO;
[self.parser parseWithNamed:@"anchorPk_crossPking" inBundle:[NSBundle mainBundle] completionBlock:^(SVGAVideoEntity * _Nonnull videoItem) {
self.svgDisplayView.loops = INT_MAX;
self.svgDisplayView.clearsAfterStop = NO;
self.svgDisplayView.videoItem = videoItem;
[self.svgDisplayView startAnimation];
} failureBlock:^(NSError * _Nonnull error) {
}];
} else {
self.tagImageView.hidden = NO;
[self.svgDisplayView stopAnimation];
self.svgDisplayView.hidden = YES;
}
}
}
- (NetImageView *)avatarImageView {
if (!_avatarImageView) {
_avatarImageView = [[NetImageView alloc] init];
_avatarImageView.layer.masksToBounds = YES;
_avatarImageView.layer.cornerRadius = 12;
_avatarImageView.image = [UIImageConstant defaultAvatarPlaceholder];
_avatarImageView.contentMode = UIViewContentModeScaleAspectFill;
}
return _avatarImageView;;
}
- (NetImageView *)tagImageView {
if (!_tagImageView) {
_tagImageView = [[NetImageView alloc] init];
}
return _tagImageView;;
}
- (UIView *)bottomView {
if (!_bottomView) {
_bottomView = [[UIView alloc] init];
_bottomView.backgroundColor = [UIColor clearColor];
}
return _bottomView;
}
- (UILabel *)nickLabel {
if (!_nickLabel) {
_nickLabel = [[UILabel alloc] init];
_nickLabel.font = [UIFont systemFontOfSize:12];
_nickLabel.textColor = [ThemeColor secondTextColor];
}
return _nickLabel;
}
- (UIImageView *)shadowImageView {
if (!_shadowImageView) {
_shadowImageView = [[UIImageView alloc] init];
_shadowImageView.userInteractionEnabled = YES;
_shadowImageView.image = [UIImage imageNamed:@"home_room_list_shadow_bg"];
}
return _shadowImageView;
}
- (UIImageView *)noteContainImageView {
if (!_noteContainImageView) {
_noteContainImageView = [[UIImageView alloc] init];
_noteContainImageView.userInteractionEnabled = YES;
_noteContainImageView.image = [[UIImage imageNamed:@"home_room_list_note_bg"] resizableImageWithCapInsets:UIEdgeInsetsMake(15, 20, 15, 40) resizingMode:UIImageResizingModeStretch];
}
return _noteContainImageView;
}
- (UILabel *)numberLabel {
if (!_numberLabel) {
_numberLabel = [[UILabel alloc] init];
_numberLabel.font = [UIFont systemFontOfSize:10];
_numberLabel.textColor = [UIColor whiteColor];
}
return _numberLabel;
}
- (XPNoteView *)noteView {
if (!_noteView) {
_noteView = [[XPNoteView alloc] init];
_noteView.pillarColor = [UIColor whiteColor];
_noteView.pillarWidth = 1.5;
[_noteView startAnimation];
}
return _noteView;
}
- (SVGAImageView *)svgDisplayView {
if (_svgDisplayView == nil) {
_svgDisplayView = [[SVGAImageView alloc]init];
_svgDisplayView.contentMode = UIViewContentModeScaleToFill;
_svgDisplayView.userInteractionEnabled = NO;
_svgDisplayView.backgroundColor = [UIColor clearColor];
}
return _svgDisplayView;
}
- (SVGAParser *)parser {
if (!_parser) {
_parser = [[SVGAParser alloc]init];
}
return _parser;
}
@end