2025-08-14 10:07:49 +08:00
|
|
|
//
|
|
|
|
|
// QXRoomSeatContentView.m
|
|
|
|
|
// QXLive
|
|
|
|
|
//
|
|
|
|
|
// Created by 启星 on 2025/6/7.
|
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
#import "QXRoomSeatContentView.h"
|
|
|
|
|
#import "QXSeatHeaderView.h"
|
|
|
|
|
#import "QXEffectSvgaView.h"
|
|
|
|
|
#import "UIView+VAP.h"
|
|
|
|
|
#import "QXFileManager.h"
|
|
|
|
|
#import <AgoraRtcKit/AgoraRtcEngineKit.h>
|
|
|
|
|
|
|
|
|
|
@interface QXRoomSeatContentView()
|
|
|
|
|
/// 头像
|
|
|
|
|
//@property (nonatomic,strong)UIView *headerContentView;
|
|
|
|
|
@property (nonatomic,strong)QXSeatHeaderView *headerView;
|
|
|
|
|
@property (nonatomic,strong)UIImageView *lockImageView;
|
|
|
|
|
@property (nonatomic,strong)UIImageView *muteImageView;
|
|
|
|
|
@property (nonatomic,strong)UIImageView *offlineImageView;
|
|
|
|
|
/// 嘉宾 / 主持 标记
|
|
|
|
|
@property (nonatomic,strong)UILabel *tagLabel;
|
|
|
|
|
|
|
|
|
|
///
|
|
|
|
|
@property (nonatomic,strong)UILabel *nameLabel;
|
|
|
|
|
|
|
|
|
|
/// 魅力背景
|
|
|
|
|
@property (nonatomic,strong)UIView *charmBgView;
|
|
|
|
|
|
|
|
|
|
/// 魅力图标
|
|
|
|
|
@property (nonatomic,strong)UIImageView *charmIcon;
|
|
|
|
|
|
|
|
|
|
/// 魅力num
|
|
|
|
|
@property (nonatomic,strong)UILabel *charmLabel;
|
|
|
|
|
|
|
|
|
|
/// 麦位序号
|
|
|
|
|
@property (nonatomic,strong)UILabel *numberLabel;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@property (nonatomic,strong) QXEffectSvgaView *micSvgaView;
|
|
|
|
|
@property (nonatomic,strong) VAPView *micMp4View;
|
|
|
|
|
@end
|
|
|
|
|
|
|
|
|
|
@implementation QXRoomSeatContentView
|
|
|
|
|
|
|
|
|
|
- (instancetype)init
|
|
|
|
|
{
|
|
|
|
|
self = [super init];
|
|
|
|
|
if (self) {
|
|
|
|
|
[self initSubviews];
|
|
|
|
|
}
|
|
|
|
|
return self;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
-(void)initSubviews{
|
|
|
|
|
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(speakInfo:) name:noticeUserSpeak object:nil];
|
|
|
|
|
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onlineStatusDidChanged:) name:noticeRoomUserOnlineStatusDidChanged object:nil];
|
|
|
|
|
self.clipsToBounds = NO;
|
|
|
|
|
[self addSubview:self.noUserImageView];
|
|
|
|
|
[self.noUserImageView mas_remakeConstraints:^(MASConstraintMaker *make) {
|
|
|
|
|
make.top.left.equalTo(self).offset(5);
|
|
|
|
|
make.right.equalTo(self).offset(-5);
|
|
|
|
|
make.height.equalTo(self.noUserImageView.mas_width);
|
|
|
|
|
}];
|
|
|
|
|
|
|
|
|
|
self.lockImageView.hidden = YES;
|
|
|
|
|
[self addSubview:self.lockImageView];
|
|
|
|
|
[self.lockImageView mas_remakeConstraints:^(MASConstraintMaker *make) {
|
|
|
|
|
make.top.left.right.height.equalTo(self.noUserImageView);
|
|
|
|
|
}];
|
|
|
|
|
|
|
|
|
|
[self addSubview:self.headerView];
|
|
|
|
|
[self.headerView mas_remakeConstraints:^(MASConstraintMaker *make) {
|
|
|
|
|
make.top.left.equalTo(self).offset(5);
|
|
|
|
|
make.right.equalTo(self).offset(-5);
|
|
|
|
|
make.height.equalTo(self.noUserImageView.mas_width);
|
|
|
|
|
}];
|
|
|
|
|
|
|
|
|
|
self.muteImageView.hidden = YES;
|
|
|
|
|
[self addSubview:self.muteImageView];
|
|
|
|
|
[self.muteImageView mas_remakeConstraints:^(MASConstraintMaker *make) {
|
|
|
|
|
make.top.left.right.height.equalTo(self.noUserImageView);
|
|
|
|
|
}];
|
|
|
|
|
|
|
|
|
|
self.offlineImageView.hidden = YES;
|
|
|
|
|
[self addSubview:self.offlineImageView];
|
|
|
|
|
[self.offlineImageView mas_remakeConstraints:^(MASConstraintMaker *make) {
|
|
|
|
|
make.top.left.right.height.equalTo(self.noUserImageView);
|
|
|
|
|
}];
|
|
|
|
|
|
|
|
|
|
self.tagLabel = [[UILabel alloc] init];
|
|
|
|
|
self.tagLabel.textColor = [UIColor whiteColor];
|
|
|
|
|
self.tagLabel.backgroundColor = RGB16(0xC134EE);
|
|
|
|
|
self.tagLabel.textAlignment = NSTextAlignmentCenter;
|
|
|
|
|
self.tagLabel.font = [UIFont systemFontOfSize:ScaleWidth(10.0)];
|
|
|
|
|
[self.tagLabel addRoundedCornersWithRadius:ScaleWidth(6.5)];
|
|
|
|
|
self.tagLabel.hidden = YES;
|
|
|
|
|
[self addSubview:self.tagLabel];
|
|
|
|
|
[self.tagLabel mas_remakeConstraints:^(MASConstraintMaker *make) {
|
|
|
|
|
// make.left.right.equalTo(self);
|
|
|
|
|
make.centerX.equalTo(self.noUserImageView);
|
|
|
|
|
make.top.equalTo(self.noUserImageView.mas_bottom).offset(-8);
|
|
|
|
|
make.height.mas_equalTo(ScaleWidth(13));
|
|
|
|
|
}];
|
|
|
|
|
|
|
|
|
|
self.nameLabel = [[UILabel alloc] init];
|
|
|
|
|
self.nameLabel.textColor = [UIColor whiteColor];
|
|
|
|
|
self.nameLabel.font = [UIFont systemFontOfSize:ScaleWidth(12.0)];
|
|
|
|
|
self.nameLabel.text = @"张三李四";
|
|
|
|
|
self.nameLabel.lineBreakMode = NSLineBreakByClipping;
|
|
|
|
|
self.nameLabel.textAlignment = NSTextAlignmentCenter;
|
|
|
|
|
// self.nameLabel.adjustsFontSizeToFitWidth = YES;
|
|
|
|
|
self.nameLabel.hidden = YES;
|
|
|
|
|
[self addSubview:self.nameLabel];
|
|
|
|
|
[self.nameLabel mas_remakeConstraints:^(MASConstraintMaker *make) {
|
|
|
|
|
make.top.equalTo(self.noUserImageView.mas_bottom).offset(5);
|
|
|
|
|
// make.centerX.equalTo(self.noUserImageView);
|
|
|
|
|
make.height.mas_equalTo(18);
|
|
|
|
|
make.left.right.equalTo(self);
|
|
|
|
|
}];
|
|
|
|
|
|
|
|
|
|
self.numberLabel = [[UILabel alloc] init];
|
|
|
|
|
self.numberLabel.textColor = RGB16(0xffffff);
|
|
|
|
|
self.numberLabel.font = [UIFont systemFontOfSize:ScaleWidth(12.0)];
|
|
|
|
|
self.numberLabel.text = @"";
|
|
|
|
|
[self addSubview:self.numberLabel];
|
|
|
|
|
[self.numberLabel mas_remakeConstraints:^(MASConstraintMaker *make) {
|
|
|
|
|
make.top.equalTo(self.noUserImageView.mas_bottom).offset(5);
|
|
|
|
|
make.centerX.equalTo(self.noUserImageView);
|
|
|
|
|
make.height.mas_equalTo(18);
|
|
|
|
|
}];
|
|
|
|
|
|
|
|
|
|
self.charmBgView = [[UIView alloc] init];
|
|
|
|
|
self.charmBgView.backgroundColor = RGB16A(0xffffff, 0.2);
|
|
|
|
|
[self.charmBgView addRoundedCornersWithRadius:ScaleWidth(7.5)];
|
|
|
|
|
self.charmBgView.hidden = YES;
|
|
|
|
|
[self addSubview:self.charmBgView];
|
|
|
|
|
[self.charmBgView mas_remakeConstraints:^(MASConstraintMaker *make) {
|
|
|
|
|
make.left.right.equalTo(self);
|
|
|
|
|
make.top.equalTo(self.nameLabel.mas_bottom).offset(3);
|
|
|
|
|
make.height.mas_equalTo(ScaleWidth(15));
|
|
|
|
|
}];
|
|
|
|
|
|
|
|
|
|
self.charmIcon = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"room_seat_charm"]];
|
|
|
|
|
[self.charmBgView addSubview:self.charmIcon];
|
|
|
|
|
[self.charmIcon mas_remakeConstraints:^(MASConstraintMaker *make) {
|
|
|
|
|
make.left.mas_equalTo(5);
|
|
|
|
|
make.size.mas_equalTo(CGSizeMake(14, 14));
|
|
|
|
|
make.centerY.equalTo(self.charmBgView).offset(-1);
|
|
|
|
|
}];
|
|
|
|
|
|
|
|
|
|
self.charmLabel = [[UILabel alloc] init];
|
|
|
|
|
self.charmLabel.textColor = [UIColor whiteColor];
|
|
|
|
|
self.charmLabel.text = @"0";
|
|
|
|
|
|
|
|
|
|
self.charmLabel.font = [UIFont systemFontOfSize:ScaleWidth(10.0)];
|
|
|
|
|
[self.charmBgView addSubview:self.charmLabel];
|
|
|
|
|
[self.charmLabel mas_remakeConstraints:^(MASConstraintMaker *make) {
|
|
|
|
|
// make.left.equalTo(self.charmIcon.mas_right).offset(1);
|
|
|
|
|
make.centerY.equalTo(self.charmBgView);
|
|
|
|
|
make.centerX.equalTo(self.charmBgView).offset(7);
|
|
|
|
|
}];
|
|
|
|
|
|
|
|
|
|
[self addSubview:self.micSvgaView];
|
|
|
|
|
[self.micSvgaView mas_remakeConstraints:^(MASConstraintMaker *make) {
|
|
|
|
|
make.left.top.equalTo(self.headerView).offset(-8);
|
|
|
|
|
make.right.bottom.equalTo(self.headerView).offset(8);
|
|
|
|
|
}];
|
|
|
|
|
|
|
|
|
|
[self addSubview:self.micMp4View];
|
|
|
|
|
[self.micMp4View mas_remakeConstraints:^(MASConstraintMaker *make) {
|
|
|
|
|
make.left.top.equalTo(self.headerView).offset(-8);
|
|
|
|
|
make.right.bottom.equalTo(self.headerView).offset(8);
|
|
|
|
|
}];
|
|
|
|
|
}
|
|
|
|
|
-(void)onlineStatusDidChanged:(NSNotification*)notice{
|
|
|
|
|
NSDictionary *parm = notice.object;
|
|
|
|
|
NSString *uid = [NSString stringWithFormat:@"%@",[parm objectForKey:@"user_id"]];
|
|
|
|
|
BOOL isOnline = [[parm objectForKey:@"is_online"] boolValue];
|
|
|
|
|
if ([uid isEqualToString:self.pitModel.user_id]) {
|
|
|
|
|
if (isOnline) {
|
|
|
|
|
self.offlineImageView.hidden = YES;
|
|
|
|
|
}else{
|
|
|
|
|
self.offlineImageView.hidden = NO;
|
2025-08-18 15:23:07 +08:00
|
|
|
[self stopAudioAnimation];
|
2025-08-14 10:07:49 +08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
-(void)speakInfo:(NSNotification*)notice{
|
|
|
|
|
id object = notice.object;
|
|
|
|
|
if ([object isKindOfClass:[AgoraRtcAudioVolumeInfo class]]) {
|
|
|
|
|
AgoraRtcAudioVolumeInfo *info = (AgoraRtcAudioVolumeInfo*)object;
|
|
|
|
|
if (info.uid == 0) {
|
|
|
|
|
info.uid = [QXGlobal shareGlobal].loginModel.user_id.longLongValue;
|
|
|
|
|
}
|
|
|
|
|
if ((info.uid == self.pitModel.user_id.longLongValue)) {
|
|
|
|
|
if (info.volume > 0) {
|
|
|
|
|
[self startAudioAnimation];
|
|
|
|
|
}else{
|
|
|
|
|
[self stopAudioAnimation];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
-(void)setIsPK:(BOOL)isPK{
|
|
|
|
|
_isPK = isPK;
|
|
|
|
|
self.nameLabel.font = [UIFont systemFontOfSize:10];
|
|
|
|
|
self.numberLabel.font = [UIFont systemFontOfSize:10];
|
|
|
|
|
self.charmLabel.font = [UIFont systemFontOfSize:8];
|
|
|
|
|
[self.nameLabel mas_updateConstraints:^(MASConstraintMaker *make) {
|
|
|
|
|
make.height.mas_equalTo(ScaleWidth(15));
|
|
|
|
|
}];
|
|
|
|
|
[self.numberLabel mas_updateConstraints:^(MASConstraintMaker *make) {
|
|
|
|
|
make.height.mas_equalTo(ScaleWidth(15));
|
|
|
|
|
}];
|
|
|
|
|
[self.charmBgView mas_updateConstraints:^(MASConstraintMaker *make) {
|
|
|
|
|
make.height.mas_equalTo(ScaleWidth(12));
|
|
|
|
|
make.top.equalTo(self.nameLabel.mas_bottom).offset(1);
|
|
|
|
|
}];
|
|
|
|
|
[self.charmBgView addRoundedCornersWithRadius:ScaleWidth(6)];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// 开启麦位动画
|
|
|
|
|
- (void)startAudioAnimation {
|
|
|
|
|
if (self.isSeatSpeaking == YES) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
self.isSeatSpeaking = YES;
|
|
|
|
|
[self.micSvgaView setHidden:NO];
|
|
|
|
|
[self.micSvgaView startEffectSvgaPlay];
|
|
|
|
|
}
|
|
|
|
|
/// 暂停麦位动画
|
|
|
|
|
- (void)stopAudioAnimation {
|
|
|
|
|
if (self.isSeatSpeaking == NO) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
self.isSeatSpeaking = NO;
|
|
|
|
|
[self.micSvgaView setHidden:YES];
|
|
|
|
|
[self.micSvgaView pauseEffectSvgaPlay];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
-(void)setTagString:(NSString *)tagString{
|
|
|
|
|
_tagString = tagString;
|
|
|
|
|
self.tagLabel.hidden = NO;
|
|
|
|
|
self.numberLabel.hidden = YES;
|
|
|
|
|
self.tagLabel.text = tagString;
|
|
|
|
|
[self.tagLabel sizeToFit];
|
|
|
|
|
[self.tagLabel mas_remakeConstraints:^(MASConstraintMaker *make) {
|
|
|
|
|
make.centerX.equalTo(self.noUserImageView);
|
|
|
|
|
make.top.equalTo(self.noUserImageView.mas_bottom).offset(-8);
|
|
|
|
|
make.height.mas_equalTo(ScaleWidth(13));
|
|
|
|
|
make.width.mas_equalTo(self.tagLabel.width+16);
|
|
|
|
|
}];
|
|
|
|
|
}
|
|
|
|
|
-(void)setType:(QXRoomSeatContentViewType)type{
|
|
|
|
|
_type = type;
|
|
|
|
|
switch (type) {
|
|
|
|
|
case QXRoomSeatContentViewTypeNormal:{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case QXRoomSeatContentViewTypeAuction:{
|
|
|
|
|
[self.noUserImageView mas_remakeConstraints:^(MASConstraintMaker *make) {
|
|
|
|
|
make.top.left.equalTo(self).offset(5);
|
|
|
|
|
make.bottom.equalTo(self).offset(-5);
|
|
|
|
|
make.width.equalTo(self.noUserImageView.mas_height);
|
|
|
|
|
}];
|
|
|
|
|
[self.headerView mas_remakeConstraints:^(MASConstraintMaker *make) {
|
|
|
|
|
make.left.right.top.bottom.equalTo(self.noUserImageView);
|
|
|
|
|
}];
|
|
|
|
|
|
|
|
|
|
[self.nameLabel mas_remakeConstraints:^(MASConstraintMaker *make) {
|
|
|
|
|
make.left.equalTo(self.noUserImageView.mas_right).offset(2);
|
|
|
|
|
make.right.equalTo(self);
|
|
|
|
|
make.height.mas_equalTo(18);
|
|
|
|
|
make.centerY.equalTo(self.noUserImageView);
|
|
|
|
|
}];
|
|
|
|
|
|
|
|
|
|
[self.numberLabel mas_remakeConstraints:^(MASConstraintMaker *make) {
|
|
|
|
|
make.left.equalTo(self.noUserImageView.mas_right).offset(2);
|
|
|
|
|
make.right.equalTo(self);
|
|
|
|
|
make.height.mas_equalTo(18);
|
|
|
|
|
make.centerY.equalTo(self.noUserImageView);
|
|
|
|
|
}];
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
-(void)setNumber:(NSInteger)number{
|
|
|
|
|
_number = number;
|
|
|
|
|
if (number>8) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
self.numberLabel.text = [NSString localizedStringWithFormat:QXText(@"%@号麦"),[NSString stringWithFormat:@"%ld",number]];
|
|
|
|
|
}
|
|
|
|
|
-(void)setOnlyShowHeader:(BOOL)onlyShowHeader{
|
|
|
|
|
_onlyShowHeader = onlyShowHeader;
|
|
|
|
|
self.charmBgView.hidden = onlyShowHeader;
|
|
|
|
|
self.nameLabel.font = onlyShowHeader?[UIFont systemFontOfSize:8]:[UIFont systemFontOfSize:ScaleWidth(12.0)];;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
-(void)setPitModel:(QXRoomPitModel *)pitModel{
|
|
|
|
|
_pitModel = pitModel;
|
|
|
|
|
if (pitModel.is_lock.intValue == 1) {
|
|
|
|
|
self.lockImageView.hidden = NO;
|
|
|
|
|
}else{
|
|
|
|
|
self.lockImageView.hidden = YES;
|
|
|
|
|
}
|
|
|
|
|
if (pitModel.user_id.longValue > 0) {
|
|
|
|
|
self.noUserImageView.hidden = YES;
|
|
|
|
|
self.numberLabel.hidden = YES;
|
|
|
|
|
self.headerView.hidden = NO;
|
|
|
|
|
self.nameLabel.hidden = NO;
|
|
|
|
|
[self.headerView setHeadIcon:pitModel.avatar dress:pitModel.dress];
|
|
|
|
|
self.nameLabel.text = pitModel.nickname;
|
|
|
|
|
self.charmBgView.hidden = NO;
|
|
|
|
|
self.charmLabel.text = [NSString qx_showHotCountNum:pitModel.charm.longLongValue];
|
|
|
|
|
|
|
|
|
|
// if (pitModel.is_mute.intValue == 1) {
|
|
|
|
|
// self.muteImageView.hidden = NO;
|
|
|
|
|
// }else{
|
|
|
|
|
// self.muteImageView.hidden = YES;
|
|
|
|
|
// }
|
|
|
|
|
}else{
|
|
|
|
|
self.noUserImageView.hidden = NO;
|
|
|
|
|
self.offlineImageView.hidden = YES;
|
|
|
|
|
self.numberLabel.hidden = NO;
|
|
|
|
|
self.headerView.hidden = YES;
|
|
|
|
|
self.nameLabel.hidden = YES;
|
|
|
|
|
self.charmBgView.hidden = YES;
|
|
|
|
|
|
|
|
|
|
// if (pitModel.is_mute.intValue == 1) {
|
|
|
|
|
// self.muteImageView.hidden = YES;
|
|
|
|
|
// }else{
|
|
|
|
|
// self.muteImageView.hidden = YES;
|
|
|
|
|
// }
|
|
|
|
|
}
|
|
|
|
|
if (self.type == QXRoomSeatContentViewTypeAuction) {
|
|
|
|
|
self.charmBgView.hidden = YES;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
-(void)hideCharm{
|
|
|
|
|
self.charmBgView.hidden = YES;
|
|
|
|
|
}
|
|
|
|
|
//-(void)setUserModel:(QXRoomOwnerModel *)userModel{
|
|
|
|
|
// _userModel = userModel;
|
|
|
|
|
// self.noUserImageView.hidden = YES;
|
|
|
|
|
// self.numberLabel.hidden = YES;
|
|
|
|
|
// self.headerView.hidden = NO;
|
|
|
|
|
// self.nameLabel.hidden = NO;
|
|
|
|
|
//
|
|
|
|
|
// [self.headerView setHeadIcon:userModel.avatar dress:userModel.dress];
|
|
|
|
|
// self.nameLabel.text = userModel.nickname;
|
|
|
|
|
// self.charmBgView.hidden = NO;
|
|
|
|
|
// self.charmLabel.text = [NSString qx_showHotCountNum:userModel.charm.longLongValue];
|
|
|
|
|
//}
|
|
|
|
|
-(void)setIs_lock:(NSString *)is_lock{
|
|
|
|
|
_is_lock = is_lock;
|
|
|
|
|
self.pitModel.is_lock = is_lock;
|
|
|
|
|
if (self.pitModel.is_lock.intValue == 1) {
|
|
|
|
|
self.lockImageView.hidden = NO;
|
|
|
|
|
}else{
|
|
|
|
|
self.lockImageView.hidden = YES;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
-(void)setIsAutionSeat:(BOOL)isAutionSeat{
|
|
|
|
|
_isAutionSeat = isAutionSeat;
|
|
|
|
|
|
|
|
|
|
self.noUserImageView.image = [UIImage imageNamed:@"room_seat_auction_icon"];
|
|
|
|
|
self.charmBgView.hidden = YES;
|
|
|
|
|
}
|
|
|
|
|
-(void)setNumberString:(NSString *)numberString{
|
|
|
|
|
self.numberLabel.text = numberString;
|
|
|
|
|
}
|
|
|
|
|
//-(void)setSinger:(QXSongListModel *)singer{
|
|
|
|
|
// _singer = singer;
|
|
|
|
|
// self.noUserImageView.hidden = YES;
|
|
|
|
|
// self.numberLabel.hidden = YES;
|
|
|
|
|
// self.headerView.hidden = NO;
|
|
|
|
|
// self.nameLabel.hidden = NO;
|
|
|
|
|
//
|
|
|
|
|
// [self.headerView setHeadIcon:singer.avatar dress:singer.dress];
|
|
|
|
|
// self.nameLabel.text = singer.nickname;
|
|
|
|
|
// self.charmBgView.hidden = NO;
|
|
|
|
|
// self.charmLabel.text = [NSString qx_showHotCountNum:singer.charm.longLongValue];
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
-(QXSeatHeaderView *)headerView{
|
|
|
|
|
if (!_headerView) {
|
|
|
|
|
_headerView = [[QXSeatHeaderView alloc] init];
|
|
|
|
|
_headerView.hidden = YES;
|
|
|
|
|
}
|
|
|
|
|
return _headerView;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
-(UIImageView *)noUserImageView{
|
|
|
|
|
if (!_noUserImageView) {
|
|
|
|
|
UIImage *image = [UIImage imageNamed:@"room_seat_icon"];
|
|
|
|
|
// image = [image imageByTintColor:QXConfig.themeColor];
|
|
|
|
|
_noUserImageView = [[UIImageView alloc] initWithImage:image];
|
|
|
|
|
}
|
|
|
|
|
return _noUserImageView;
|
|
|
|
|
}
|
|
|
|
|
-(UIImageView *)offlineImageView{
|
|
|
|
|
if (!_offlineImageView) {
|
|
|
|
|
UIImage *image = [UIImage imageNamed:@"room_user_offline"];
|
|
|
|
|
// image = [image imageByTintColor:QXConfig.themeColor];
|
|
|
|
|
_offlineImageView = [[UIImageView alloc] initWithImage:image];
|
|
|
|
|
_offlineImageView.contentMode = UIViewContentModeScaleToFill;
|
|
|
|
|
_offlineImageView.hidden = YES;
|
|
|
|
|
}
|
|
|
|
|
return _offlineImageView;
|
|
|
|
|
}
|
|
|
|
|
-(UIImageView *)lockImageView{
|
|
|
|
|
if (!_lockImageView) {
|
|
|
|
|
_lockImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"room_seat_lock"]];
|
|
|
|
|
}
|
|
|
|
|
return _lockImageView;
|
|
|
|
|
}
|
|
|
|
|
-(UIImageView *)muteImageView{
|
|
|
|
|
if (!_muteImageView) {
|
|
|
|
|
_muteImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"room_seat_mute"]];
|
|
|
|
|
}
|
|
|
|
|
return _muteImageView;
|
|
|
|
|
}
|
|
|
|
|
- (QXEffectSvgaView *)micSvgaView {
|
|
|
|
|
if (!_micSvgaView) {
|
|
|
|
|
_micSvgaView = [[QXEffectSvgaView alloc] initWithFrame:CGRectZero isAutoPlay:NO];
|
|
|
|
|
_micSvgaView.hidden = YES;
|
|
|
|
|
[_micSvgaView loadSVGAPlayerWith:@"mic" inBundle:[NSBundle mainBundle] loop:10000000];
|
|
|
|
|
__weak typeof(self)weakSelf = self;
|
|
|
|
|
_micSvgaView.didFinishedDisplay = ^(QXEffectSvgaView * _Nonnull svgaView) {
|
|
|
|
|
weakSelf.isSeatSpeaking = NO;
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
return _micSvgaView;
|
|
|
|
|
}
|
|
|
|
|
- (VAPView *)micMp4View {
|
|
|
|
|
if (!_micMp4View) {
|
|
|
|
|
_micMp4View = [[VAPView alloc] initWithFrame:CGRectZero];
|
|
|
|
|
_micMp4View.hwd_enterBackgroundOP = HWDMP4EBOperationTypePauseAndResume;
|
|
|
|
|
_micMp4View.contentMode = UIViewContentModeScaleAspectFit;
|
|
|
|
|
_micMp4View.userInteractionEnabled = NO;
|
|
|
|
|
_micMp4View.backgroundColor = [UIColor clearColor];
|
|
|
|
|
_micMp4View.hidden = YES;
|
|
|
|
|
}
|
|
|
|
|
return _micMp4View;
|
|
|
|
|
}
|
|
|
|
|
-(void)destroyViews{
|
|
|
|
|
[[NSNotificationCenter defaultCenter] removeObserver:self];
|
|
|
|
|
[self.micMp4View stopHWDMP4];
|
|
|
|
|
[self.micMp4View removeFromSuperview];
|
|
|
|
|
self.micMp4View = nil;
|
|
|
|
|
[self.micSvgaView destroySvga];
|
|
|
|
|
}
|
|
|
|
|
@end
|