382 lines
16 KiB
Objective-C
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
|