Files
yinmeng-ios-store/yinmeng-ios/DingDangApp/CodeClass/Room/View/Micro/RoomMicroHeaderView.m
2023-12-07 10:50:21 +08:00

382 lines
16 KiB
Objective-C

//
// RoomMicroHeaderView.m
// DingDangApp
//
// Created by apple on 2023/5/27.
//
#import "RoomMicroHeaderView.h"
@implementation RoomMicroHeaderView
- (void)initView{
[self headerFrameImageView];
[self headerImageView];
[self addSubview:self.animationVoiceImg];
[self addSubview:self.animationVoiceImg2];
[self identityBtn];
[self avatarSVGAView];
[self voiceSVGAView];
[self voiceSVGAView2];
[self microEmojiImageView];
[self sendSubviewToBack:self.voiceSVGAView];
[self sendSubviewToBack:self.voiceSVGAView2];
[self sendSubviewToBack:self.animationVoiceImg];
[self sendSubviewToBack:self.animationVoiceImg2];
[self.animationVoiceImg mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self.headerImageView).insets(UIEdgeInsetsMake(-20, -20, -20, -20));
}];
[self.animationVoiceImg2 mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self.headerImageView).insets(UIEdgeInsetsMake(-20, -20, -20, -20));
}];
[self headerImageBtn];
}
/**更新是否显示头像框*/
- (void)updateCharmImgShow:(BOOL)charmImgShow
{
self.charmImgShow = charmImgShow;
if (![ToolsObject IsNullWithObject:self.microModel.user_id]) {
if (![ToolsObject IsNullWithObject:self.microModel.head_box]&&self.charmImgShow == YES) {
if ([self.microModel.head_box rangeOfString:@"svga"].location != NSNotFound) {
self.headerFrameImageView.hidden = YES;
self.avatarSVGAView.hidden = NO;
[self.avatarSVGAView startSVAGAmimationWithSVGAUrl:self.microModel.head_box loopCount:NSIntegerMax];
}else{
self.headerFrameImageView.hidden = NO;
self.avatarSVGAView.hidden = YES;
[self.headerFrameImageView ddSetAnimatedImageView:[NSURL URLWithString:self.microModel.head_box]];
}
}else{
self.headerFrameImageView.hidden = YES;
self.avatarSVGAView.hidden = YES;
}
}
}
- (void)hideAllView:(BOOL)hide{
self.voiceSVGAView2.hidden= self.voiceSVGAView.hidden= self.avatarSVGAView.hidden = self.maskView.hidden = self.headerFrameImageView.hidden = self.muteMicIcon.hidden = self.animationVoiceImg.hidden =self.animationVoiceImg2.hidden = hide;
}
- (void)starAnimateEmojiImage:(NSString *)emojiUrl{
if ([ToolsObject IsNullWithObject:emojiUrl]) {
return;
}
self.microEmojiImageView.hidden = NO;
[self.microEmojiImageView ddSetAnimatedImageView:[NSURL URLWithString:emojiUrl]];
__block NSInteger time = 5; //倒计时时间
if (self.timer) {
dispatch_source_cancel(self.timer);
self.timer = nil;
}
WeakSelf(ws);
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
self.timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);
dispatch_source_set_timer(self.timer,dispatch_walltime(NULL, 0),1.0*NSEC_PER_SEC, 0); //每秒执行
dispatch_source_set_event_handler(self.timer, ^{
if(time <= 0) { //倒计时结束,关闭
dispatch_source_cancel(ws.timer);
dispatch_async(dispatch_get_main_queue(), ^{
//设置按钮的样式
ws.microEmojiImageView.hidden = YES;
[ws.microEmojiImageView stopAnimating];
ws.microEmojiImageView.image = nil;
});
} else {
time--;
}
});
dispatch_resume(self.timer);
}
- (void)setMicroModel:(RoomMicroModel *)microModel{
_microModel = microModel;
self.identityBtn.hidden = YES;
self.muteMicIcon.hidden = YES;
if([microModel.is_boss boolValue] ==YES){
self.headerImageView.image = KGetImage(@"room_3");
}
if (self.microEmojiImageView.isAnimating) {
if (![self.lastShowEmoji_User_id isEqualToString:microModel.user_id]) {
self.microEmojiImageView.hidden = YES;
[self.microEmojiImageView stopAnimating];
self.microEmojiImageView.image = nil;
if (self.timer) {
dispatch_source_cancel(self.timer);
self.timer = nil;
}
}
}
if (self.voiceSVGAView.isPlaying) {
if (![self.lastShowEmoji_User_id isEqualToString:microModel.user_id]) {
self.voiceSVGAView.hidden = YES;
[self.voiceSVGAView.svgPlayer stopAnimation];
}
}
self.lastShowEmoji_User_id = microModel.user_id;
if([ToolsObject isBlankString:microModel.user_id].length>0){
[self hideAllView:NO];
[self.headerImageView ddSetAnimatedImageView:[NSURL URLWithString:microModel.avatar] placeholderImage:nil];
[self.headerFrameImageView ddSetAnimatedImageView:[NSURL URLWithString:microModel.head_box] placeholderImage:nil];
self.muteMicIcon.hidden = [microModel.open_mic boolValue];
if (![ToolsObject IsNullWithObject:microModel.head_box]&&self.charmImgShow == YES) {
if ([microModel.head_box rangeOfString:@"svga"].location != NSNotFound) {
self.headerFrameImageView.hidden = YES;
self.avatarSVGAView.hidden = NO;
[self.avatarSVGAView startSVAGAmimationWithSVGAUrl:microModel.head_box loopCount:NSIntegerMax];
}else{
self.headerFrameImageView.hidden = NO;
self.avatarSVGAView.hidden = YES;
[self.headerFrameImageView ddSetAnimatedImageView:[NSURL URLWithString:microModel.head_box]];
}
}else{
self.avatarSVGAView.hidden = YES;
self.headerFrameImageView.hidden = YES;
}
UIColor *sexColor;
if([microModel.sex integerValue]==1){
// Initialization code
self.headerImageView.layer.cornerRadius = KAdaptedWidth(26);
self.headerImageView.layer.masksToBounds = YES;
self.headerImageView.layer.borderWidth = 1;
self.headerImageView.layer.borderColor = [UIColor jk_colorWithHex:0x92C0FF].CGColor;
sexColor =[UIColor jk_colorWithHex:0x92C0FF];
}else{
self.headerImageView.layer.cornerRadius = KAdaptedWidth(26);
self.headerImageView.layer.masksToBounds = YES;
self.headerImageView.layer.borderWidth = 1;
self.headerImageView.layer.borderColor = [UIColor jk_colorWithHex:0xFF92AC].CGColor;
sexColor =[UIColor jk_colorWithHex:0xFF92AC];
}
}else{
[self.headerImageView ddSetAnimatedImageView:[NSURL URLWithString:@""] placeholderImage:nil];
[self.headerFrameImageView ddSetAnimatedImageView:[NSURL URLWithString:@""] placeholderImage:nil];
self.identityBtn.hidden = YES;
self.headerImageView.layer.cornerRadius = 5;
self.headerImageView.layer.masksToBounds = YES;
self.headerImageView.layer.borderWidth = 1;
self.headerImageView.layer.borderColor = Kclear_color.CGColor;
if([microModel.is_boss boolValue] ==YES){
self.headerImageView.image = KGetImage(@"room_3");
}else{
self.headerImageView.image = KGetImage(@"room_2");
}
}
if ([microModel.is_boss boolValue]==YES){
self.identityBtn.hidden = NO;
[self.identityBtn setTitle:microModel.micGiftString forState:UIControlStateNormal];
}else{
// if ([microModel.mic_id integerValue] ==88){//房主
// self.identityBtn.hidden = NO;
// [self.identityBtn mas_updateConstraints:^(MASConstraintMaker *make) {
// make.size.mas_equalTo(CGSizeMake(KAdaptedWidth(22), KAdaptedHeight(12)));
// }];
//
// }else if ([microModel.mic_id integerValue] ==66){//主持
// self.identityBtn.hidden = NO;
// [self.identityBtn mas_updateConstraints:^(MASConstraintMaker *make) {
// make.size.mas_equalTo(CGSizeMake(KAdaptedWidth(22), KAdaptedHeight(12)));
// }];
// }else if ([microModel.mic_id integerValue] ==22){//嘉宾
// self.identityBtn.hidden = NO;
// [self.identityBtn mas_updateConstraints:^(MASConstraintMaker *make) {
// make.size.mas_equalTo(CGSizeMake(KAdaptedWidth(22), KAdaptedHeight(12)));
// }];
// }else{
// self.identityBtn.hidden = NO;
// [self.identityBtn mas_updateConstraints:^(MASConstraintMaker *make) {
// make.size.mas_equalTo(CGSizeMake(KAdaptedWidth(12), KAdaptedHeight(12)));
// }];
// }
}
if([microModel.is_lock boolValue] ==YES){
self.headerImageView.image = KGetImage(@"room75");
[self hideAllView:YES];
}
}
//开始播放麦位光波动画
- (void)starMicroAnimation{
if(![ToolsObject IsNullWithObject:self.microModel.light_wave_type]){
if(self.animationVoiceImg.isAnimating){
WeakSelf(ws);
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[ws animateVoiceSvga];
});
}else{
[self animateVoiceSvga];
}
}else{
//没有麦位光波
[self animateVoiceImage];
}
}
//播放本地麦位光波
- (void)animateVoiceImage{
[self bringSubviewToFront:self.animationVoiceImg];
[self bringSubviewToFront:self.animationVoiceImg2];
self.animationVoiceImg.hidden = self.animationVoiceImg2.hidden = NO;
self.voiceSVGAView.hidden = self.voiceSVGAView2.hidden = YES;
if (self.animationVoiceImg.isAnimating) {
WeakSelf(ws);
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[ToolsObject starAnimation:self.animationVoiceImg2];
});
}else{
[ToolsObject starAnimation:self.animationVoiceImg];
}
}
//开始播放播放麦位光波svga
- (void)animateVoiceSvga{
if (self.voiceSVGAView.isPlaying) {
WeakSelf(ws);
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[ws.voiceSVGAView2 startSVAGAmimationWithSVGAUrl:self.microModel.light_wave_type loopCount:1];
});
}else{
[self.voiceSVGAView startSVAGAmimationWithSVGAUrl:self.microModel.light_wave_type loopCount:1];
}
}
- (void)headerImageBtnClick{
KRepeatClickTime(1);
if(self.headerImageBtnBlock){
self.headerImageBtnBlock();
}
}
- (DDAnimateImageView*)headerImageView{
if (!_headerImageView) {
_headerImageView = [[DDAnimateImageView alloc] init];
_headerImageView.image = KGetImage(@"room_2");
_headerImageView.contentMode = UIViewContentModeScaleAspectFill;
[self addSubview:_headerImageView];
[_headerImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.size.mas_equalTo(CGSizeMake(KAdaptedWidth(52), KAdaptedWidth(52)));
make.centerX.mas_equalTo(self).mas_offset(0);
make.top.mas_equalTo(self.mas_top).mas_offset(20);
}];
}
return _headerImageView;
}
- (DDAnimateImageView*)headerFrameImageView{
if (!_headerFrameImageView) {
_headerFrameImageView = [[DDAnimateImageView alloc] init];
_headerFrameImageView.contentMode = UIViewContentModeScaleAspectFill;
_headerFrameImageView.hidden = YES;
[self addSubview:_headerFrameImageView];
[_headerFrameImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self.headerImageView).insets(UIEdgeInsetsMake(-10, -10, -10, -10));
}];
}
return _headerFrameImageView;
}
- (UIButton *)identityBtn{
if (!_identityBtn) {
_identityBtn = [UIButton buttonWithType:UIButtonTypeCustom];
[_identityBtn setBackgroundImage:KGetImage(@"room_82") forState:UIControlStateNormal];
[_identityBtn setTitleColor:Kwhite_color forState:UIControlStateNormal];
_identityBtn.titleLabel.font = KFontBold(8);
[self addSubview:_identityBtn];
[_identityBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerX.mas_equalTo(self.headerImageView).mas_offset(0);
make.bottom.mas_equalTo(self.headerImageView).mas_offset(0);
make.size.mas_equalTo(CGSizeMake(KAdaptedWidth(22), KAdaptedHeight(12)));
}];
}
return _identityBtn;
}
- (UIButton *)headerImageBtn{
if (!_headerImageBtn) {
_headerImageBtn = [UIButton buttonWithType:UIButtonTypeCustom];
[_headerImageBtn addTarget:self action:@selector(headerImageBtnClick) forControlEvents:UIControlEventTouchUpInside];
[self addSubview:_headerImageBtn];
[_headerImageBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self.headerImageView).insets(UIEdgeInsetsMake(0, 0, 0, 0));
}];
}
return _headerImageBtn;
}
-(DDSVGABaseView *)avatarSVGAView
{
if (!_avatarSVGAView) {
_avatarSVGAView = [[DDSVGABaseView alloc]initWithFrame:CGRectZero];
_avatarSVGAView.delegate = self;
_avatarSVGAView.hidden = YES;
[self addSubview:_avatarSVGAView];
[_avatarSVGAView mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self.headerImageView).insets(UIEdgeInsetsMake(-10, -10, -10, -10));
}];
}
return _avatarSVGAView;
}
-(DDSVGABaseView *)voiceSVGAView
{
if (!_voiceSVGAView) {
_voiceSVGAView = [[DDSVGABaseView alloc]initWithFrame:CGRectZero];
_voiceSVGAView.delegate = self;
_voiceSVGAView.hidden = YES;
[self addSubview:_voiceSVGAView];
[_voiceSVGAView mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self.headerImageView).insets(UIEdgeInsetsMake(-20, -20, -20, -20));
}];
}
return _voiceSVGAView;
}
-(DDSVGABaseView *)voiceSVGAView2
{
if (!_voiceSVGAView2) {
_voiceSVGAView2 = [[DDSVGABaseView alloc]initWithFrame:CGRectZero];
_voiceSVGAView2.delegate = self;
_voiceSVGAView2.hidden = YES;
[self addSubview:_voiceSVGAView2];
[_voiceSVGAView2 mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self.headerImageView).insets(UIEdgeInsetsMake(-20, -20, -20, -20));
}];
}
return _voiceSVGAView2;
}
- (DDAnimateImageView *)microEmojiImageView{
if (!_microEmojiImageView) {
_microEmojiImageView = [[DDAnimateImageView alloc] init];
_microEmojiImageView.contentMode = UIViewContentModeScaleAspectFill;
[self addSubview:_microEmojiImageView];
[_microEmojiImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self.headerImageView).insets(UIEdgeInsetsMake(0, 0, 0, 0));
}];
}return _microEmojiImageView;
}
- (UIImageView *)muteMicIcon{
if (!_muteMicIcon) {
_muteMicIcon = [[UIImageView alloc] init];
_muteMicIcon.image = [UIImage imageNamed:@"room_80"];
_muteMicIcon.hidden = YES;
[self addSubview:_muteMicIcon];
[_muteMicIcon mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.bottom.equalTo(self.headerImageView);
make.width.height.mas_equalTo(15);
}];
}return _muteMicIcon;
}
- (UIImageView *)animationVoiceImg{
if (!_animationVoiceImg) {
_animationVoiceImg = [[UIImageView alloc] init];
_animationVoiceImg.contentMode = UIViewContentModeScaleToFill;
}return _animationVoiceImg;
}
- (UIImageView *)animationVoiceImg2{
if (!_animationVoiceImg2) {
_animationVoiceImg2 = [[UIImageView alloc] init];
_animationVoiceImg2.contentMode = UIViewContentModeScaleToFill;
}return _animationVoiceImg2;
}
@end