| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304 |
- //
- // MOLevelDanMuView.m
- // MiMoLive
- //
- // Created by SuperC on 2023/12/29.
- //
- #define headImgWidth 16.0
- #define KBaseHeight 30.0
- #define LeftSpacing 6.0
- #define BaseSpacing 4.0
- #import "MOLevelDanMuView.h"
- #import "UIView+BarrageView.h"
- #import "MORtmEntity.h"
- @interface MOLevelDanMuView ()
- @property (nonatomic, strong) UIImageView *headImgView;
- @property (nonatomic, strong) UILabel *nameLab;
- @property (nonatomic, strong) UIView *bubbleBgView;
- @property (nonatomic, strong) UIView *bubbleBaseImgView;
- @property (nonatomic, strong) UIImageView *bubbleImgView;
- @property (nonatomic, strong) UILabel *contentLab;
- @property (nonatomic, strong) MORtmEntity *rtmEntity;
- @end
- @implementation MOLevelDanMuView
- - (instancetype)initWithFrame:(CGRect)frame
- {
- if (self = [super initWithFrame:frame]) {
- [self loadSubviews];
- }
- return self;
- }
- - (void)loadSubviews{
- [self.bubbleBgView addSubview:self.bubbleBaseImgView];
- [self.bubbleBgView addSubview:self.bubbleImgView];
- [self.bubbleBgView addSubview:self.headImgView];
- [self.bubbleBgView addSubview:self.nameLab];
- [self.bubbleBgView addSubview:self.contentLab];
-
- [self addSubview:self.bubbleBgView];
-
- [self.bubbleBgView mas_makeConstraints:^(MASConstraintMaker *make) {
- make.edges.equalTo(self);
- }];
-
- [self.bubbleBaseImgView mas_makeConstraints:^(MASConstraintMaker *make) {
- // make.edges.equalTo(self.bubbleBgView);
- make.left.equalTo(self).offset(3.0);
- make.right.equalTo(self).offset(-3.0);
- make.top.equalTo(self).offset(4.0);
- make.bottom.equalTo(self).offset(-4.0);
- }];
-
- [self.bubbleImgView mas_makeConstraints:^(MASConstraintMaker *make) {
- // make.edges.equalTo(self.bubbleBgView);
- make.left.equalTo(self).offset(0.0);
- make.right.equalTo(self).offset(0.0);
- make.top.equalTo(self).offset(1.0);
- make.bottom.equalTo(self).offset(-1.0);
- }];
-
- [self.headImgView mas_makeConstraints:^(MASConstraintMaker *make) {
- make.centerY.equalTo(self.bubbleBgView);
- make.height.width.equalTo(@(headImgWidth));
- make.left.equalTo(@(LeftSpacing));
- }];
-
- [self.nameLab mas_makeConstraints:^(MASConstraintMaker *make) {
- make.left.equalTo(self.headImgView.mas_right).offset(BaseSpacing);
- make.centerY.equalTo(self.bubbleBgView);
- make.width.greaterThanOrEqualTo(@10);
- }];
-
- [self.contentLab mas_makeConstraints:^(MASConstraintMaker *make) {
- make.left.equalTo(self.nameLab.mas_right).offset(BaseSpacing);
- make.top.bottom.equalTo(self.bubbleBgView);
- make.right.equalTo(self.bubbleBgView).offset(-10);
- }];
-
- }
- - (void)layoutSubviews{
- [super layoutSubviews];
- #warning frame 与 Masonry 只能使用一种 并且 不能将Masonry代码写在这里, 否则内存泄漏
-
- // self.bubbleBgView.frame = CGRectMake(headImgWidth / 2.0 , 15.0, self.bounds.size.width - headImgWidth, 20.0);
- // self.bubbleImgView.frame = CGRectMake(0.0, 0.0, self.bubbleBgView.bounds.size.width, self.bubbleBgView.bounds.size.height);
- // self.contentLab.frame = CGRectMake(25.0, 0.0, self.bubbleBgView.bounds.size.width - 25.0, self.bubbleBgView.bounds.size.height);
- //
- // self.headBgImgView.frame = CGRectMake(0.0, 0.0, headImgWidth + 10.0, headImgWidth + 10.0);
- // self.headImgView.frame = CGRectMake(0.0, 5.0, headImgWidth, headImgWidth);
- //
- //// self.headBgImgView.center = self.headImgView.center;
- //
- // self.nameLab.frame = CGRectMake(headImgWidth + 3.0, 5.0, self.bubbleBgView.bounds.size.width - headImgWidth, 16.0);
-
- WEAKSELF
-
-
- }
- - (CGSize)sizeThatFits:(CGSize)size{
- CGFloat minWidth = 20.0;
-
- MORtmUser *user = self.rtmEntity.user;
- MORtmJosnEntity *jsonEntity = (MORtmJosnEntity *)self.rtmEntity.data;
- CGFloat nameLabWidth = [MOTools getWidthWithString:user.username font:[MOTextTools mediumFont:12.0]];
- CGFloat contentLabWidth = [MOTools getWidthWithString:jsonEntity.content font:[MOTextTools regularFont:12.0]] + 2.0;
- CGFloat viewWidth = LeftSpacing + headImgWidth + BaseSpacing + nameLabWidth + BaseSpacing + contentLabWidth + 10.0;
-
- viewWidth = MAX(viewWidth, minWidth);
- return CGSizeMake(viewWidth, KBaseHeight);
- }
- - (void)setRtmEntity:(MORtmEntity *)rtmEntity{
- _rtmEntity = rtmEntity;
-
- MORtmUser *rtmUser = rtmEntity.user;
-
- NSInteger level = rtmEntity.user.level ? rtmEntity.user.level : 0;
-
- NSInteger theBarrageCode = rtmUser.dressing.liveBarrage;
- if(theBarrageCode != 0){
- //使用新逻辑 - 素材库
- MOEffect *bubbleObject = [[MOSvgaSourceManage shareManager] getPropsInfoWithCode:theBarrageCode];
- if(bubbleObject){
- WEAKSELF
- NSURL *bubbleUrl = [NSURL URLWithString:bubbleObject.effectFile];
- [[MOBubbleImageManager sharedManager] resizableNormalImageWithURL:bubbleUrl And:UIEdgeInsetsMake(0, 30.0, 0, 30.0) completion:^(UIImage * _Nonnull image) {
- dispatch_async(dispatch_get_main_queue(), ^{
- [weakSelf.bubbleImgView setImage:image];
- });
- }];
- self.bubbleImgView.hidden = NO;
- self.bubbleBaseImgView.hidden = YES;
- }
- else{
- self.bubbleImgView.hidden = YES;
- self.bubbleBaseImgView.hidden = NO;
- }
- }
- else{
- self.bubbleImgView.hidden = YES;
- self.bubbleBaseImgView.hidden = NO;
- }
-
- [self.headImgView sd_setImageWithURL:[NSURL URLWithString:rtmEntity.user.avatar] placeholderImage:[UIImage imageNamed:@"icon_mine_placeHolder"]];
-
- self.nameLab.text = rtmEntity.user.username;
-
- MORtmJosnEntity *jsonEntity = (MORtmJosnEntity *)rtmEntity.data;
-
- self.contentLab.text = jsonEntity.content;
-
- }
- #pragma mark - BarrageViewProtocol
- - (void)configureWithParams:(NSDictionary *)params
- {
- [super configureWithParams:params];
-
- self.rtmEntity = (MORtmEntity *)params[@"rtmEntiry"];
- }
- - (void)updateWithTime:(NSTimeInterval)time
- {
- [self setNeedsLayout];
- }
- #pragma mark - Lazy
- - (UIImageView *)headImgView{
- if (!_headImgView)
- {
- _headImgView = [[UIImageView alloc] init];
- _headImgView.contentMode = UIViewContentModeScaleAspectFill;
- [_headImgView setImage:[UIImage imageNamed:@"icon_mine_placeHolder"]];
- _headImgView.layer.cornerRadius = headImgWidth / 2.0;
- _headImgView.layer.masksToBounds = YES;
- }
- return _headImgView;
- }
- - (UILabel *)nameLab{
- if (!_nameLab)
- {
- _nameLab = [[UILabel alloc] init];
- _nameLab.text = @"";
- _nameLab.font = [MOTextTools mediumFont:12.0];
- _nameLab.textColor = kBaseTextHightlightColor_1;
- _nameLab.textAlignment = NSTextAlignmentLeft;
- }
- return _nameLab;
- }
- - (UIView *)bubbleBgView{
- if (_bubbleBgView == nil)
- {
- _bubbleBgView = [UIView new];
-
- _bubbleBgView.backgroundColor = [UIColor clearColor];
- }
- return _bubbleBgView;
- }
- - (UIImageView *)bubbleImgView{
- if (!_bubbleImgView)
- {
- _bubbleImgView = [[UIImageView alloc] init];
- _bubbleImgView.contentMode = UIViewContentModeScaleToFill;
- }
- return _bubbleImgView;
- }
- - (UIView *)bubbleBaseImgView{
- if (_bubbleBaseImgView == nil)
- {
- _bubbleBaseImgView = [UIView new];
-
- _bubbleBaseImgView.backgroundColor = [MOTools colorWithHexString:@"#000000" alpha:0.3];
- _bubbleBaseImgView.layer.cornerRadius = (KBaseHeight - 2.0 - 6.0 ) / 2.0;
- _bubbleBaseImgView.layer.masksToBounds = YES;
- }
- return _bubbleBaseImgView;
- }
- - (UILabel *)contentLab{
- if (!_contentLab)
- {
- _contentLab = [[UILabel alloc] init];
- _contentLab.text = @"";
- _contentLab.font = [MOTextTools regularFont:12.0];
- _contentLab.textColor = [UIColor whiteColor];
- _contentLab.textAlignment = NSTextAlignmentLeft;
- }
- return _contentLab;
- }
- - (UIImage *)getBubbleBgImgWith:(NSInteger)level{
- UIImage *image;
-
- if(level >= 0 && level < 10){
- image = nil;
- }
- else if (level >= 10 && level < 50){
- image = [UIImage imageNamed:@"icon_live_dan_bg_10"];
- }
- else if (level >= 50 && level < 65){
- image = [UIImage imageNamed:@"icon_live_dan_bg_50"];
- }
- else if (level >= 65 && level < 80){
- image = [UIImage imageNamed:@"icon_live_dan_bg_65"];
- }
- else if (level >= 80 && level < 100){
- image = [UIImage imageNamed:@"icon_live_dan_bg_80"];
- }
- else if (level >= 100 && level < 120){
- image = [UIImage imageNamed:@"icon_live_dan_bg_100"];
- }
- else if (level >= 120 && level < 135){
- image = [UIImage imageNamed:@"icon_live_dan_bg_120"];
- }
- else if (level >= 135){
- image = [UIImage imageNamed:@"icon_live_dan_bg_135"];
- }
- image = [UIImage imageNamed:@"icon_bubble_vip_k"];
- return image;
- }
- - (UIImage *)getHeadImgWith:(NSInteger)level{
- UIImage *image;
- if(level >= 0 && level < 65){
- image = nil;
- }
- else if (level >= 65 && level < 80){
- image = [UIImage imageNamed:@"icon_live_dan_head_bg_65"];
- }
- else if (level >= 80 && level < 100){
- image = [UIImage imageNamed:@"icon_live_dan_head_bg_80"];
- }
- else if (level >= 100 && level < 120){
- image = [UIImage imageNamed:@"icon_live_dan_head_bg_100"];
- }
- else if (level >= 120 && level < 135){
- image = [UIImage imageNamed:@"icon_live_dan_head_bg_120"];
- }
- else if (level >= 135){
- image = [UIImage imageNamed:@"icon_live_dan_head_bg_135"];
- }
- return image;
- }
- @end
|