123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245 |
- //
- // YOUPAILZChatRoomSeatAvatarView.m
- // VQU
- //
- // Created by CY on 2021/10/28.
- // Copyright © 2021 MS. All rights reserved.
- //
- #import "YOUPAILZChatRoomSeatAvatarView.h"
- #import "SDWebImageCoderHelper.h"
- @interface YOUPAILZChatRoomSeatAvatarView () <CAAnimationDelegate>
- @end
- @implementation YOUPAILZChatRoomSeatAvatarView
- - (instancetype)initWithFrame:(CGRect)frame{
- if (self = [super initWithFrame:frame]) {
- [self youpaifinitUI];
- }
- return self;
- }
- - (void)youpaifinitUI{
- YOUPAILZAvatarView *youpaipavatarView = [YOUPAILZAvatarView youpaifavatarViewWithFrame:CGRectMake(0.0f, 0.0f, self.mj_w, self.mj_h) avatarURL:nil personalityBoxURL:nil];
- youpaipavatarView.hidden = YES;
- [self addSubview:youpaipavatarView];
- self.youpaipavatarView = youpaipavatarView;
- [youpaipavatarView mas_makeConstraints:^(MASConstraintMaker *make) {
- make.centerX.equalTo(self);
- make.top.mas_offset(0);
- make.size.mas_offset(self.mj_size);
- }];
-
- LOTAnimationView *youpaiptalkingAnimationView = [LOTAnimationView animationWithFilePath:[[NSBundle mainBundle] pathForResource:@"ic_chatroom_seat_animation_new" ofType:@"json"]];
- youpaiptalkingAnimationView.frame = CGRectMake(0.0f, 0.0f, self.mj_w * 1.8f, self.mj_h * 1.8f);
- youpaiptalkingAnimationView.loopAnimation = YES;
- youpaiptalkingAnimationView.contentMode = UIViewContentModeScaleAspectFill;
- [youpaiptalkingAnimationView play];
- [self addSubview:youpaiptalkingAnimationView];
- self.youpaiptalkingAnimationView = youpaiptalkingAnimationView;
- [youpaiptalkingAnimationView mas_makeConstraints:^(MASConstraintMaker *make) {
- make.center.equalTo(youpaipavatarView);
- make.size.mas_offset(CGSizeMake(self.mj_w * 1.8f, self.mj_h * 1.8f));
- }];
- [self sendSubviewToBack:youpaiptalkingAnimationView];
-
- UIImageView *youpaipdisableSendMessageImgV = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"vqu_images_chatroom_seat_disable_send_message"]];
- youpaipdisableSendMessageImgV.hidden = YES;
- [self addSubview:youpaipdisableSendMessageImgV];
- self.youpaipdisableSendMessageImgV = youpaipdisableSendMessageImgV;
- [youpaipdisableSendMessageImgV mas_makeConstraints:^(MASConstraintMaker *make) {
- make.right.equalTo(youpaipavatarView.mas_right);
- make.bottom.equalTo(youpaipavatarView.mas_bottom);
- make.size.mas_offset(CGSizeMake(16.0f, 16.0f));
- }];
-
- UIImageView *youpaipunmannedStateImgV = [[UIImageView alloc] init];
- youpaipunmannedStateImgV.hidden = YES;
- [self addSubview:youpaipunmannedStateImgV];
- self.youpaipunmannedStateImgV = youpaipunmannedStateImgV;
- [youpaipunmannedStateImgV mas_makeConstraints:^(MASConstraintMaker *make) {
- make.centerX.equalTo(self);
- make.top.mas_offset(0);
- make.size.mas_offset(self.mj_size);
- }];
-
- UIImageView *youpaipemojiImgV = [[UIImageView alloc] init];
- youpaipemojiImgV.contentMode = UIViewContentModeScaleAspectFit;
- youpaipemojiImgV.hidden = YES;
- [self addSubview:youpaipemojiImgV];
- self.youpaipemojiImgV = youpaipemojiImgV;
- [youpaipemojiImgV mas_makeConstraints:^(MASConstraintMaker *make) {
- make.center.equalTo(youpaipavatarView);
- make.size.mas_offset(self.mj_size);
- }];
-
- UIImageView *youpaiphatImgV = [[UIImageView alloc] init];
- youpaiphatImgV.hidden = YES;
- [self addSubview:youpaiphatImgV];
- self.youpaiphatImgV = youpaiphatImgV;
- [youpaiphatImgV mas_makeConstraints:^(MASConstraintMaker *make) {
- make.top.equalTo(youpaipavatarView.mas_top).offset(-17.0f);
- make.centerX.equalTo(youpaipavatarView);
- make.size.mas_offset(CGSizeMake(45.0f, 45.0f));
- }];
- }
- -(void)setYoupaipmodel:(YOUPAILZChatRoomSeatModel *)youpaipmodel{
-
- self.youpaipavatarView.hidden = YES;
- self.youpaiptalkingAnimationView.hidden = YES;
- self.youpaipdisableSendMessageImgV.hidden = YES;
- self.youpaipunmannedStateImgV.hidden = YES;
- switch (youpaipmodel.youpaipseatState) {
- case LZChatRoomSeatStateWithFree:{
- self.youpaipunmannedStateImgV.hidden = NO;
- switch (youpaipmodel.youpaipseatType) {
- case LZChatRoomSeatTypeWithOrdinary:{
- if (youpaipmodel.youpaipplayType == 2) {
- NSString *imageName = @"";
- if (youpaipmodel.youpaipseatIndex <= 4) {
- imageName = @"vqu_image_chatroom_seat_woman";
- if (youpaipmodel.youpaipisSelected) {
- imageName = [NSString stringWithFormat:@"%@_sel",imageName];
- }
- }else{
- imageName = @"vqu_image_chatroom_seat_man";
- if (youpaipmodel.youpaipisSelected) {
- imageName = [NSString stringWithFormat:@"%@_sel",imageName];
- }
- }
- self.youpaipunmannedStateImgV.image = [UIImage imageNamed:imageName];
-
- }else{
- NSString *imageName = @"vqu_images_chatroom_seat_ordinary";
- if (youpaipmodel.youpaipisSelected) {
- imageName = [NSString stringWithFormat:@"%@_sel",imageName];
- }
- self.youpaipunmannedStateImgV.image = [UIImage imageNamed:imageName];
- }
- }
- break;
- case LZChatRoomSeatTypeWithGuest:{
- if (youpaipmodel.youpaipplayType == 2) {
- NSString *imageName = @"vqu_image_chatroom_seat_man";
- if (youpaipmodel.youpaipisSelected) {
- imageName = [NSString stringWithFormat:@"%@_sel",imageName];
- }
- self.youpaipunmannedStateImgV.image = [UIImage imageNamed:imageName];
- }else{
- NSString *imageName = @"vqu_images_chatroom_seat_guest";
- if (youpaipmodel.youpaipisSelected) {
- imageName = [NSString stringWithFormat:@"%@_sel",imageName];
- }
- self.youpaipunmannedStateImgV.image = [UIImage imageNamed:imageName];
- }
-
- }
- break;
- case LZChatRoomSeatTypeWithHost:
- self.youpaipunmannedStateImgV.image = [UIImage imageNamed:@"vqu_images_chatroom_seat_host"];
- break;
-
- default:
- break;
- }
- }
- break;
- case LZChatRoomSeatStateWithLock:{
- self.youpaipunmannedStateImgV.hidden = NO;
- self.youpaipunmannedStateImgV.image = [UIImage imageNamed:@"vqu_images_chatroom_seat_lock"];
- }
- break;
- case LZChatRoomSeatStateWithBusy:{
- self.youpaipunmannedStateImgV.hidden = YES;
- self.youpaipavatarView.hidden = NO;
- self.youpaipavatarView.youpaipavatarURL = [LCTools getImageUrlWithAddress:youpaipmodel.youpaipuserInfo.youpaipavatar];
- self.youpaipavatarView.youpaippersonalityBoxURL = [LCTools getImageUrlWithAddress:youpaipmodel.youpaipuserInfo.youpaipavatar_frame];
- // NSLog(@"%@ -- %@",youpaipmodel.youpaipuserInfo.youpaipnickname,self.youpaipavatarView.youpaipavatarURL.absoluteString);
- }
- default:
- break;
- }
-
- if (youpaipmodel.youpaipisTalking) {
- self.youpaiptalkingAnimationView.hidden = NO;
- }
- if (youpaipmodel.youpaipisDisableMicrophone) {
- self.youpaipdisableSendMessageImgV.hidden = NO;
- }
- if (youpaipmodel.youpaipisEmoji) {
- self.youpaipemojiImgV.hidden = NO;
- if (![youpaipmodel.youpaipemojiImg isEqual:_youpaipmodel.youpaipemojiImg]) {
- self.youpaipemojiImgV.image = nil;
- [self.youpaipemojiImgV.layer removeAllAnimations];
- @weakify(self);
- [[SDWebImageDownloader sharedDownloader] downloadImageWithURL:[LCTools getImageUrlWithAddress:youpaipmodel.youpaipemojiImg] options:SDWebImageDownloaderUseNSURLCache progress:^(NSInteger receivedSize, NSInteger expectedSize, NSURL * _Nullable targetURL) {} completed:^(UIImage * _Nullable image, NSData * _Nullable data, NSError * _Nullable error, BOOL finished) {
- @strongify(self);
- if(image != nil){
- NSArray<SDWebImageFrame *> *imageFrames = [SDWebImageCoderHelper framesFromAnimatedImage:image];
- NSTimeInterval totalDuration = 0.0;
- NSMutableArray *images = [NSMutableArray array];
- for (SDWebImageFrame *imageFrame in imageFrames) {
- totalDuration += imageFrame.duration;
- [images addObject:imageFrame.image];
- }
- // UIImageView 关键帧动画
- CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"contents"];
- // 动画结束之后的回调
- animation.delegate = self;
- animation.duration = totalDuration;
- animation.repeatCount = 1;
- // 设置animation的唯一标示,这样在delegate回调的时候能够区分开来
- [animation setValue:@"animation1" forKey:@"customType"];
- animation.values = images;
- self.youpaipemojiImgV.image = image;
- [self.youpaipemojiImgV.layer addAnimation:animation forKey:@""];
- }
- }];
-
- }
- }else{
- [self.youpaipemojiImgV.layer removeAllAnimations];
- self.youpaipemojiImgV.hidden = YES;
- self.youpaipemojiImgV.image = nil;
- }
- if (youpaipmodel.youpaiphat_url.length != 0) {
- self.youpaiphatImgV.hidden = NO;
- self.youpaiphatImgV.image = nil;
- [self.youpaiphatImgV sd_setImageWithURL:[LCTools getImageUrlWithAddress:youpaipmodel.youpaiphat_url]];
- if (youpaipmodel.youpaipseatIndex <= 4) {
- [self.youpaiphatImgV mas_remakeConstraints:^(MASConstraintMaker *make) {
- make.top.equalTo(self.youpaipavatarView.mas_top).offset(-17.0f);
- make.centerX.equalTo(self.youpaipavatarView);
- make.size.mas_offset(CGSizeMake(45.0f, 45.0f));
- }];
- }else{
- [self.youpaiphatImgV mas_remakeConstraints:^(MASConstraintMaker *make) {
- make.top.equalTo(self.youpaipavatarView.mas_top).offset(-10.0f);
- make.left.equalTo(self.youpaipavatarView.mas_left).offset(-15.0f);
- make.size.mas_offset(CGSizeMake(45.0f, 45.0f));
- }];
- }
- }else{
- self.youpaiphatImgV.hidden = YES;
- }
- _youpaipmodel = youpaipmodel;
- }
- -(void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag {
- NSString *keyPathValue = [anim valueForKey:@"customType"];
- if ([keyPathValue isEqualToString:@"animation1"]) {
- [self.youpaipemojiImgV.layer removeAllAnimations];
- self.youpaipemojiImgV.image = nil;
- self.youpaipemojiImgV.hidden = YES;
- self.youpaipmodel.youpaipisEmoji = NO;
- self.youpaipmodel.youpaipemojiImg = @"";
- }
- }
- @end
|