123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226 |
- #import "TXFullVideoCell.h"
- #import "ClassroomService.h"
- #import "LocalRenderManager.h"
- #import "TXRTCService.h"
- @interface TXFullVideoCell ()
- @property (weak, nonatomic) IBOutlet UIView *mineView;
- @property (nonatomic, strong) NSString *displayUserId;
- @property (weak, nonatomic) IBOutlet UIView *videoContainer;
- @property (weak, nonatomic) IBOutlet UIView *bottomView;
- @property (weak, nonatomic) IBOutlet UIView *backGroundView;
- @property (weak, nonatomic) IBOutlet UILabel *nameLabel;
- @property (weak, nonatomic) IBOutlet UIImageView *micStatus;
- @property (weak, nonatomic) IBOutlet UIImageView *qualityImage;
- @property (nonatomic, strong) UIView *closeCameraView;
- @property (nonatomic, strong) UIImageView *avatarView;
- @end
- @implementation TXFullVideoCell
- - (void)awakeFromNib {
- [super awakeFromNib];
-
- if (![self.backGroundView.subviews containsObject:self.videoView]) {
- [self.backGroundView addSubview:self.videoView];
- }
- self.mineView.layer.cornerRadius = 10;
- self.mineView.layer.maskedCorners = kCALayerMinXMaxYCorner;
- }
- - (instancetype)initWithCoder:(NSCoder *)coder {
- self = [super initWithCoder:coder];
- if (self) {
- }
- return self;
- }
- - (void)setCellSize:(CGSize)cellSize {
- _cellSize = cellSize;
- [self.videoView mas_remakeConstraints:^(MASConstraintMaker *make) {
- make.left.right.top.bottom.mas_equalTo(self);
- }];
-
- [self.videoView addSubview:self.closeCameraView];
- [self.closeCameraView mas_remakeConstraints:^(MASConstraintMaker *make) {
- make.left.mas_equalTo(self.videoView.mas_left);
- make.top.mas_equalTo(self.videoView.mas_top);
- make.bottom.mas_equalTo(self.videoView.mas_bottom);
- make.right.mas_equalTo(self.videoView.mas_right);
- }];
- }
- - (void)setModel:(RoomMember *)member displayUserId:(NSString *)displayUserId {
- [self resetDefaultStyle];
- self.displayUserId = displayUserId;
- if (member == nil) {
- return;
- }
- RoomMember *currentMember = [[ClassroomService sharedService].currentRoom getMember:member.userId];
- if (member.userId == nil) {
- self.videoView.hidden = YES;
- }
- else {
- [self.avatarView sd_setImageWithURL:[NSURL URLWithString:[currentMember.headUrl getUrlEndcodeString]] placeholderImage:[UIImage imageNamed:STUDENT_AVATAR]];
- if ([currentMember.userId isEqualToString:[ClassroomService sharedService].currentRoom.currentMember.userId]) {
- self.mineView.hidden = NO;
- }
- else {
- self.mineView.hidden = YES;
- }
- [self remakeNameLable:currentMember];
-
- }
- if (![currentMember.userId isEqualToString:displayUserId]) {
- [self renderVideo:member];
- }
- BOOL isMicEnable = currentMember.microphoneEnable;
- NSString *imgName = @"";
- if (isMicEnable) {
- imgName = @"mic_on";
-
- }
- else {
- imgName = @"mic_off";
- }
- [self.micStatus setImage:[UIImage imageNamed:imgName]];
- }
- - (void)updateQuality:(TXNetWorkingStatus)quality {
- NSString *displayImg = @"network_full";
- switch (quality) {
- case TXNetWorkingStatus_Full:
- displayImg = @"network_full";
- break;
- case TXNetWorkingStatus_Good:
- displayImg = @"network_good";
- break;
- case TXNetWorkingStatus_Nomal:
- displayImg = @"network_nomal";
- break;
- case TXNetWorkingStatus_Bad:
- displayImg = @"network_bad";
- break;
- case TXNetWorkingStatus_Poor:
- displayImg = @"network_none";
- break;
- default:
- break;
- }
- self.qualityImage.image = [UIImage imageNamed:displayImg];
- }
- - (void)updateUserVolume:(NSInteger)volume isCloseMic:(BOOL)isClose {
- NSString *micImg = @"volume_full";
- if (volume >= 75) {
- micImg = @"volume_full";
- }
- else if (volume >= 50) {
- micImg = @"volume_big";
- }
- else if (volume >=25) {
- micImg = @"volume_small";
- }
- else {
- micImg = @"volume_none";
- }
- if (isClose) {
- micImg = @"mic_off";
- }
- [self.micStatus setImage:[UIImage imageNamed:micImg]];
- }
- - (void)resetDefaultStyle {
- self.videoView.hidden = NO;
- }
- - (void)renderVideo:(RoomMember *)member {
-
- if([[ClassroomService sharedService].currentRoom.currentMemberId isEqualToString:member.userId]) {
-
- [TRTC_MANAGER renderLocalUserInView:self.videoView isCameraEnable:member.cameraEnable];
- }
- else {
- if (![member.userId isEqualToString:self.displayUserId]) {
- self.displayUserId = member.userId;
- [TRTC_MANAGER renderRemoteUser:member.userId inView:self.videoView];
- }
- }
- if (member.cameraEnable) {
- self.closeCameraView.hidden = YES;
- }
- else {
- self.closeCameraView.hidden = NO;
- }
- }
- - (void)remakeNameLable:(RoomMember *)member {
- NSString * nameTxt = member.name.length > 8 ? [NSString stringWithFormat:@"%@...",[member.name substringToIndex:8]] : member.name;
- self.nameLabel.text = nameTxt;
- }
- - (UIView *)videoView {
- if(!_videoView) {
- _videoView = [[UIView alloc] init];
- _videoView.backgroundColor = HexRGB(0xE9EDF3);
- }
- return _videoView;
- }
- - (UIView *)closeCameraView {
- if (!_closeCameraView) {
- _closeCameraView = [[UIView alloc] initWithFrame:CGRectZero];
- _closeCameraView.backgroundColor = HexRGB(0xE9EDF3);
- [_closeCameraView addSubview:self.avatarView];
- [self.avatarView mas_makeConstraints:^(MASConstraintMaker *make) {
- make.centerX.mas_equalTo(_closeCameraView.mas_centerX);
- make.centerY.mas_equalTo(_closeCameraView.mas_centerY);
- make.width.height.mas_equalTo(82);
- }];
- }
- return _closeCameraView;
- }
- - (UIImageView *)avatarView {
- if (!_avatarView) {
- _avatarView = [[UIImageView alloc] init];
- _avatarView.layer.cornerRadius = 41;
- _avatarView.clipsToBounds = YES;
- _avatarView.layer.borderColor = [UIColor whiteColor].CGColor;
- _avatarView.layer.borderWidth = 1.0f;
- _avatarView.contentMode = UIViewContentModeScaleAspectFill;
- }
- return _avatarView;
- }
- @end
|