优化房间

This commit is contained in:
liyuhua
2023-09-28 18:29:41 +08:00
parent 15c4fc3871
commit 886ac6f950
42 changed files with 624 additions and 543 deletions

View File

@@ -31,7 +31,7 @@
</Testables> </Testables>
</TestAction> </TestAction>
<LaunchAction <LaunchAction
buildConfiguration = "Release" buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0" launchStyle = "0"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@@ -10,6 +10,7 @@
"scale" : "2x" "scale" : "2x"
}, },
{ {
"filename" : "room_menu_face@3x.png",
"idiom" : "universal", "idiom" : "universal",
"scale" : "3x" "scale" : "3x"
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 721 B

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 859 B

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -10,6 +10,7 @@
"scale" : "2x" "scale" : "2x"
}, },
{ {
"filename" : "room_menu_more@3x.png",
"idiom" : "universal", "idiom" : "universal",
"scale" : "3x" "scale" : "3x"
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 849 B

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

View File

@@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "room_menu_send_bg@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "room_menu_send_bg@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 715 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "room_menu_voice_close@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "room_menu_voice_close@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "room_menu_voice_open@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "room_menu_voice_open@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@@ -10,15 +10,15 @@
NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_BEGIN
typedef NS_ENUM(NSInteger, XPRoomMenuItemType) { typedef NS_ENUM(NSInteger, XPRoomMenuItemType) {
XPRoomMenuItemType_Input = 1, XPRoomMenuItemType_Input = 1,
XPRoomMenuItemType_Mic,///话筒 XPRoomMenuItemType_Mic,///话筒
XPRoomMenuItemType_Face,///表情 XPRoomMenuItemType_Voice, ///声音
XPRoomMenuItemType_Message,///房间私聊 XPRoomMenuItemType_Face,///表情
XPRoomMenuItemType_More,///更多 XPRoomMenuItemType_Message,///房间私聊
XPRoomMenuItemType_ArrangeMic,///排麦 XPRoomMenuItemType_More,///更多
XPRoomMenuItemType_Gift,///礼物 XPRoomMenuItemType_ArrangeMic,///排麦
XPRoomMenuItemType_Gift,///礼物
XPRoomMenuItemType_Noble,///贵族 XPRoomMenuItemType_Noble,///贵族
XPRoomMenuItemType_Play,///更多玩法
}; };
@interface XPRoomMenuItem : NSObject @interface XPRoomMenuItem : NSObject

View File

@@ -1,8 +1,8 @@
// //
// YMRoomBottomMenuView.m // XPRoomBottomMenuView.m
// YUMI // xplan-ios
// //
// Created by YUMI on 2021/10/11. // Created by on 2021/10/11.
// //
#import "XPRoomMenuContainerView.h" #import "XPRoomMenuContainerView.h"
@@ -12,12 +12,10 @@
#import "AccountInfoStorage.h" #import "AccountInfoStorage.h"
#import "TTPopup.h" #import "TTPopup.h"
#import "RtcManager.h" #import "RtcManager.h"
#import "XNDJTDDLoadingTool.h"
#import "StatisticsServiceHelper.h" #import "StatisticsServiceHelper.h"
#import "DJDKMIMOMColor.h"
#import "YUMIMacroUitls.h"
#import "XCCurrentVCStackManager.h" #import "XCCurrentVCStackManager.h"
#import "ClientConfig.h" #import "UIImage+Utils.h"
///Model ///Model
#import "XPRoomMenuItem.h" #import "XPRoomMenuItem.h"
#import "MicroQueueModel.h" #import "MicroQueueModel.h"
@@ -30,12 +28,10 @@
#import "XPSendGiftView.h" #import "XPSendGiftView.h"
#import "SessionListViewController.h" #import "SessionListViewController.h"
#import "XPRoomMoreMenuViewController.h" #import "XPRoomMoreMenuViewController.h"
#import "XPNobleCenterViewController.h"
#import "XPRoomFaceViewController.h" #import "XPRoomFaceViewController.h"
#import "XPRoomHalfMessageView.h" #import "XPRoomHalfMessageView.h"
#import "XPRoomMessageBubbleView.h" #import "XPRoomMessageBubbleView.h"
#import "XPRoomMorePlayViewController.h"
NSString * const kRoomPlayEnterKey = @"kRoomPlayEnterKey";
@interface XPRoomMenuContainerView ()<XPRoomMessageBubbleViewDelegate> @interface XPRoomMenuContainerView ()<XPRoomMessageBubbleViewDelegate>
/// ///
@@ -46,6 +42,8 @@ NSString * const kRoomPlayEnterKey = @"kRoomPlayEnterKey";
@property (nonatomic,strong) UIButton *inputButton; @property (nonatomic,strong) UIButton *inputButton;
/// ///
@property (nonatomic,strong) UIButton *micButton; @property (nonatomic,strong) UIButton *micButton;
///
@property (nonatomic,strong) UIButton *voiceButton;
/// ///
@property (nonatomic,strong) UIButton *faceButton; @property (nonatomic,strong) UIButton *faceButton;
/// ///
@@ -69,113 +67,133 @@ NSString * const kRoomPlayEnterKey = @"kRoomPlayEnterKey";
@implementation XPRoomMenuContainerView @implementation XPRoomMenuContainerView
- (instancetype)initWithDelegate:(id<RoomHostDelegate>)delegate { - (instancetype)initWithDelegate:(id<RoomHostDelegate>)delegate {
self = [super init]; self = [super init];
if (self) { if (self) {
self.delegate = delegate; self.delegate = delegate;
[self initSubViews]; [self initSubViews];
[self initSubViewConstraints]; [self initSubViewConstraints];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showGiftView:) name:@"kShowGiftView" object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showGiftView:) name:@"kShowGiftView" object:nil];
} }
return self; return self;
} }
- (void)menuResignFirstResponder { - (void)menuResignFirstResponder {
[self.inputTextView.editTextFiled resignFirstResponder]; [self.inputTextView.editTextFiled resignFirstResponder];
} }
#pragma mark - Response #pragma mark - Response
- (void)menuButtonAction:(UIButton *)sender { - (void)menuButtonAction:(UIButton *)sender {
XPRoomMenuItemType type = sender.tag; XPRoomMenuItemType type = sender.tag;
switch (type) { switch (type) {
case XPRoomMenuItemType_Input: case XPRoomMenuItemType_Input:
{ {
if (self.delegate.getRoomInfo.isCloseScreen) { if (self.delegate.getRoomInfo.isCloseScreen) {
[XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPRoomMenuContainerView0")]; [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPRoomMenuContainerView0")];
return; return;
} }
if (self.delegate.getRoomInfo.type == RoomType_Anchor) { if (self.delegate.getRoomInfo.type == RoomType_Anchor) {
self.inputTextView = [XPRoomSendTextView showTextView:self.superview.superview delegate:self.delegate atUid:nil atNick:nil]; self.inputTextView = [XPRoomSendTextView showTextView:self.superview.superview delegate:self.delegate atUid:nil atNick:nil];
} else { } else {
self.inputTextView = [XPRoomSendTextView showTextView:self.superview delegate:self.delegate atUid:nil atNick:nil]; self.inputTextView = [XPRoomSendTextView showTextView:self.superview delegate:self.delegate atUid:nil atNick:nil];
} }
[StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_chatbox_click];
} }
break; break;
case XPRoomMenuItemType_Mic: { case XPRoomMenuItemType_Mic: {
[RtcManager instance].localMuted = !self.micButton.isSelected; [RtcManager instance].localMuted = !self.micButton.isSelected;
if([RtcManager instance].localMuted == NO){
for (MicroQueueModel *sequence in [self.delegate getMicroQueue].allValues) {
if ([AccountInfoStorage instance].getUid.integerValue == sequence.userInfo.uid) {
[[RtcManager instance] broadcast:YES];
}
}
}
self.micButton.selected = [RtcManager instance].isLocalMuted; self.micButton.selected = [RtcManager instance].isLocalMuted;
} }
break; break;
case XPRoomMenuItemType_Face: {
XPRoomFaceViewController * faceVC = [[XPRoomFaceViewController alloc] init]; case XPRoomMenuItemType_Voice: {
faceVC.modalPresentationStyle = UIModalPresentationOverFullScreen; [RtcManager instance].remoteMuted = !self.voiceButton.isSelected;
faceVC.roomId = [NSString stringWithFormat:@"%ld", self.delegate.getRoomInfo.roomId]; self.voiceButton.selected = [RtcManager instance].isRemoteMuted;
[self.delegate.getCurrentNav presentViewController:faceVC animated:YES completion:nil];
} }
break; break;
case XPRoomMenuItemType_Gift: {
[StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_gift_click]; case XPRoomMenuItemType_Face: {
NSString * roomUid = [NSString stringWithFormat:@"%ld", [self.delegate getRoomInfo].uid]; XPRoomFaceViewController * faceVC = [[XPRoomFaceViewController alloc] init];
XPSendGiftView * giftView = [[XPSendGiftView alloc] initWithType:SendGiftType_Room uid:roomUid]; faceVC.modalPresentationStyle = UIModalPresentationOverFullScreen;
giftView.delegate = self.delegate; faceVC.roomId = [NSString stringWithFormat:@"%ld", self.delegate.getRoomInfo.roomId];
[self.delegate.getCurrentNav presentViewController:faceVC animated:YES completion:nil];
}
break;
case XPRoomMenuItemType_Gift: {
NSString * roomUid = [NSString stringWithFormat:@"%ld", [self.delegate getRoomInfo].uid];
XPSendGiftView * giftView = [[XPSendGiftView alloc] initWithType:SendGiftType_Room uid:roomUid];
giftView.delegate = self.delegate;
giftView.freeModel = self.freeModel; giftView.freeModel = self.freeModel;
NSArray * giftUses = [self configGiftUsers:[self.delegate getMicroQueue]]; NSArray * giftUses = [self configGiftUsers:[self.delegate getMicroQueue]];
[giftView configGiftUsers:giftUses]; [giftView configGiftUsers:giftUses];
[self.delegate.getCurrentNav presentViewController:giftView animated:YES completion:nil]; [self.delegate.getCurrentNav presentViewController:giftView animated:YES completion:nil];
} }
break; break;
case XPRoomMenuItemType_Message: case XPRoomMenuItemType_Message:
{ {
[StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventroom_privateletter_click]; UIViewController * controller = (UIViewController *)self.delegate;
UIViewController * controller = (UIViewController *)self.delegate; XPRoomHalfMessageView *halfMessageView = [[XPRoomHalfMessageView alloc] initWithFrame:CGRectMake(0, KScreenHeight, KScreenWidth, KScreenHeight) controller:controller];
XPRoomHalfMessageView *halfMessageView = [[XPRoomHalfMessageView alloc] initWithFrame:CGRectMake(0, KScreenHeight, KScreenWidth, KScreenHeight) controller:controller]; [controller.view addSubview:halfMessageView];
[controller.view addSubview:halfMessageView]; [UIView animateWithDuration:.35 animations:^{
[UIView animateWithDuration:.35 animations:^{ CGRect rect = halfMessageView.frame;
CGRect rect = halfMessageView.frame; rect.origin.y = 0;
rect.origin.y = 0; halfMessageView.frame = rect;
halfMessageView.frame = rect; }];
}];
} }
break; break;
case XPRoomMenuItemType_More: { case XPRoomMenuItemType_More: {
XPRoomMoreMenuViewController * moreMenuVC = [[XPRoomMoreMenuViewController alloc] initWithDelegate:self.delegate]; XPRoomMoreMenuViewController * moreMenuVC = [[XPRoomMoreMenuViewController alloc] initWithDelegate:self.delegate];
[self.delegate.getCurrentNav presentViewController:moreMenuVC animated:YES completion:nil]; [self.delegate.getCurrentNav presentViewController:moreMenuVC animated:YES completion:nil];
} }
break; break;
case XPRoomMenuItemType_ArrangeMic:{ case XPRoomMenuItemType_ArrangeMic:{
if (self.delegate.getRoomInfo.roomModeType == RoomModeType_Open_PK_Mode && self.delegate.isRoomPKPlaying) { if (self.delegate.getRoomInfo.roomModeType == RoomModeType_Open_PK_Mode && self.delegate.isRoomPKPlaying) {
[XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPRoomMenuContainerView1")]; [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPRoomMenuContainerView1")];
return; return;
} }
self.arrangeMicButton.selected = NO; self.arrangeMicButton.selected = NO;
NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init];
request.roomId = [NSString stringWithFormat:@"%ld", self.delegate.getRoomInfo.roomId]; request.roomId = [NSString stringWithFormat:@"%ld", self.delegate.getRoomInfo.roomId];
request.userIds = @[[AccountInfoStorage instance].getUid]; request.userIds = @[[AccountInfoStorage instance].getUid];
[[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray<NIMChatroomMember *> * _Nullable members) { [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray<NIMChatroomMember *> * _Nullable members) {
NIMChatroomMember * member; NIMChatroomMember * member;
if (error == nil) { if (error == nil) {
member = members.firstObject; member = members.firstObject;
} }
RoomInfoModel * roomInfo = self.delegate.getRoomInfo; RoomInfoModel * roomInfo = self.delegate.getRoomInfo;
XPArrangeMicInfoModel * info = [[XPArrangeMicInfoModel alloc] init]; XPArrangeMicInfoModel * info = [[XPArrangeMicInfoModel alloc] init];
info.roomUid = [NSString stringWithFormat:@"%ld", roomInfo.uid]; info.roomUid = [NSString stringWithFormat:@"%ld", roomInfo.uid];
info.roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; info.roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId];
info.nick = roomInfo.nick; info.nick = roomInfo.nick;
info.roomAvatar = roomInfo.avatar; info.roomAvatar = roomInfo.avatar;
info.roomTitle = roomInfo.title; info.roomTitle = roomInfo.title;
info.micQueue = [self.delegate getMicroQueue]; info.micQueue = [self.delegate getMicroQueue];
info.isManager = (member.type == NIMChatroomMemberTypeCreator || member.type == NIMChatroomMemberTypeManager); info.isManager = (member.type == NIMChatroomMemberTypeCreator || member.type == NIMChatroomMemberTypeManager);
info.type = roomInfo.roomModeType == RoomModeType_Open_Blind ? ArrangeMicType_Dating : roomInfo.roomModeType == RoomModeType_Open_PK_Mode ? ArrangeMicType_Room_PK : ArrangeMicType_Normal; info.type = roomInfo.roomModeType == RoomModeType_Open_Blind ? ArrangeMicType_Dating : roomInfo.roomModeType == RoomModeType_Open_PK_Mode ? ArrangeMicType_Room_PK : ArrangeMicType_Normal;
XPArrangeMicViewController * arrangeMicVC = [[XPArrangeMicViewController alloc] initWithInfo:info]; XPArrangeMicViewController * arrangeMicVC = [[XPArrangeMicViewController alloc] initWithInfo:info];
[self.delegate.getCurrentNav presentViewController:arrangeMicVC animated:YES completion:nil]; [self.delegate.getCurrentNav presentViewController:arrangeMicVC animated:YES completion:nil];
}]; }];
} }
break; break;
default: case XPRoomMenuItemType_Noble: {
break; [StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventvipEntranceRoomClick];
} XPNobleCenterViewController * nobleVC = [[XPNobleCenterViewController alloc] initWithRoomUid:self.delegate.getRoomInfo.uid];
[self.delegate.getCurrentNav pushViewController:nobleVC animated:YES];
}
break;
default:
break;
}
} }
#pragma mark - notification #pragma mark - notification
@@ -193,70 +211,76 @@ NSString * const kRoomPlayEnterKey = @"kRoomPlayEnterKey";
#pragma mark - Private Method #pragma mark - Private Method
- (void)initSubViews { - (void)initSubViews {
[self addSubview:self.scrollView]; [self addSubview:self.scrollView];
[self addSubview:self.giftButton]; [self addSubview:self.giftButton];
[self.scrollView addSubview:self.stackView]; [self.scrollView addSubview:self.stackView];
[self.stackView addArrangedSubview:self.inputButton]; [self.stackView addArrangedSubview:self.inputButton];
[self.stackView addArrangedSubview:self.micButton]; [self.stackView addArrangedSubview:self.micButton];
[self.stackView addArrangedSubview:self.faceButton]; [self.stackView addArrangedSubview:self.voiceButton];
[self.stackView addArrangedSubview:self.arrangeMicButton]; [self.stackView addArrangedSubview:self.faceButton];
[self.stackView addArrangedSubview:self.messageButton]; [self.stackView addArrangedSubview:self.arrangeMicButton];
[self.stackView addArrangedSubview:self.moreButton]; [self.stackView addArrangedSubview:self.messageButton];
[self.stackView addArrangedSubview:self.moreButton];
[self.stackView addArrangedSubview:self.nobleButton];
self.backgroundColor = UIColorRGBAlpha(0xFFFFFF, 0.15);
CAShapeLayer * layer = [CAShapeLayer layer];
layer.path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, KScreenWidth, 52 +kSafeAreaBottomHeight) byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(25, 25)].CGPath;
self.layer.shadowColor = UIColorRGBAlpha(0xFFFFFF, 0.1).CGColor;
self.layer.shadowOffset = CGSizeMake(0, 5);
self.layer.mask = layer;
} }
- (void)initSubViewConstraints { - (void)initSubViewConstraints {
[self.scrollView mas_makeConstraints:^(MASConstraintMaker *make) { [self.scrollView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(self).offset(15); make.left.mas_equalTo(self).offset(15);
make.right.mas_equalTo(self.giftButton.mas_left).offset(-10); make.right.mas_equalTo(self.giftButton.mas_left).offset(-10);
make.top.bottom.mas_equalTo(self); make.top.mas_equalTo(self).offset(8);
}]; make.bottom.mas_equalTo(self).offset(-12 - kSafeAreaBottomHeight);
}];
[self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.bottom.leading.trailing.height.mas_equalTo(self.scrollView); make.top.bottom.leading.trailing.height.mas_equalTo(self.scrollView);
}]; }];
if ([ClientConfig shareConfig].canOpen) {
[self.inputButton mas_makeConstraints:^(MASConstraintMaker *make) { [self.inputButton mas_makeConstraints:^(MASConstraintMaker *make) {
make.size.mas_equalTo(CGSizeMake(100, 30)); make.size.mas_equalTo(CGSizeMake(95, 32));
}]; }];
} else {
[self.inputButton mas_makeConstraints:^(MASConstraintMaker *make) { [self.giftButton mas_makeConstraints:^(MASConstraintMaker *make) {
make.size.mas_equalTo(CGSizeMake(150, 30)); make.centerY.mas_equalTo(self.scrollView);
}]; make.right.mas_equalTo(self).offset(-20);
} make.size.mas_equalTo(CGSizeMake(35, 35));
}];
[self.giftButton mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerY.mas_equalTo(self);
make.right.mas_equalTo(self).offset(-15);
make.size.mas_equalTo(CGSizeMake(38, 38));
}];
} }
- (NSArray<XPGiftUserInfoModel *> *)configGiftUsers:(NSMutableDictionary<NSString *,MicroQueueModel *> *)queue { - (NSArray<XPGiftUserInfoModel *> *)configGiftUsers:(NSMutableDictionary<NSString *,MicroQueueModel *> *)queue {
NSMutableArray * array = [NSMutableArray array]; NSMutableArray * array = [NSMutableArray array];
for (MicroQueueModel * microModel in queue.allValues) { for (MicroQueueModel * microModel in queue.allValues) {
if (microModel.userInfo && microModel.userInfo.uid >0) { if (microModel.userInfo && microModel.userInfo.uid >0) {
UserInfoModel * userInfo = microModel.userInfo; UserInfoModel * userInfo = microModel.userInfo;
XPGiftUserInfoModel * userModel = [[XPGiftUserInfoModel alloc] init]; XPGiftUserInfoModel * userModel = [[XPGiftUserInfoModel alloc] init];
userModel.avatar = userInfo.avatar; userModel.avatar = userInfo.avatar;
userModel.vipMic = userInfo.vipMic; userModel.vipMic = userInfo.vipMic;
userModel.position = [NSString stringWithFormat:@"%d", microModel.microState.position]; userModel.position = [NSString stringWithFormat:@"%d", microModel.microState.position];
userModel.uid = userInfo.uid; userModel.uid = userInfo.uid;
if (self.delegate.getRoomInfo.type == RoomType_Anchor && microModel.microState.position == -1) {/// if (self.delegate.getRoomInfo.type == RoomType_Anchor && microModel.microState.position == -1) {///
continue; continue;
} }
[array addObject:userModel]; [array addObject:userModel];
} }
} }
if (self.delegate.getRoomInfo.leaveMode) { if (self.delegate.getRoomInfo.leaveMode) {
RoomInfoModel * roomInfo= self.delegate.getRoomInfo; RoomInfoModel * roomInfo= self.delegate.getRoomInfo;
XPGiftUserInfoModel * userModel = [[XPGiftUserInfoModel alloc] init]; XPGiftUserInfoModel * userModel = [[XPGiftUserInfoModel alloc] init];
userModel.avatar = roomInfo.avatar; userModel.avatar = roomInfo.avatar;
userModel.position = @"-1"; userModel.position = @"-1";
userModel.uid = roomInfo.uid; userModel.uid = roomInfo.uid;
[array addObject:userModel]; [array addObject:userModel];
} else if (self.delegate.getRoomInfo.type == RoomType_Anchor) { } else if (self.delegate.getRoomInfo.type == RoomType_Anchor) {
RoomInfoModel * roomInfo= self.delegate.getRoomInfo; RoomInfoModel * roomInfo= self.delegate.getRoomInfo;
BOOL hadContainerOwner = NO; BOOL hadContainerOwner = NO;
@@ -274,222 +298,218 @@ NSString * const kRoomPlayEnterKey = @"kRoomPlayEnterKey";
[array addObject:userModel]; [array addObject:userModel];
} }
} }
return array; return array;
} }
- (MicroQueueModel *)findMySelfMicro:(NSMutableDictionary<NSString *,MicroQueueModel *> *)queue { - (MicroQueueModel *)findMySelfMicro:(NSMutableDictionary<NSString *,MicroQueueModel *> *)queue {
NSString * uid = [AccountInfoStorage instance].getUid; NSString * uid = [AccountInfoStorage instance].getUid;
for (MicroQueueModel * microModel in queue.allValues) { for (MicroQueueModel * microModel in queue.allValues) {
if (microModel.userInfo && microModel.userInfo.uid == uid.integerValue) { if (microModel.userInfo && microModel.userInfo.uid == uid.integerValue) {
return microModel; return microModel;
} }
} }
return nil; return nil;
} }
#pragma mark - RoomGuestDelegate #pragma mark - RoomGuestDelegate
- (void)onMicroQueueUpdate:(NSMutableDictionary<NSString *,MicroQueueModel *> *)queue { - (void)onMicroQueueUpdate:(NSMutableDictionary<NSString *,MicroQueueModel *> *)queue {
MicroQueueModel * model = [self findMySelfMicro:queue]; MicroQueueModel * model = [self findMySelfMicro:queue];
if (model) { if (model) {
self.micButton.hidden = NO; self.micButton.hidden = NO;
self.micButton.selected = model.microState.micState == MicroMicStateType_Close ? YES : [RtcManager instance].isLocalMuted; self.micButton.selected = model.microState.micState == MicroMicStateType_Close ? YES : [RtcManager instance].isLocalMuted;
self.micButton.enabled = model.microState.micState == MicroMicStateType_Open; self.micButton.enabled = model.microState.micState == MicroMicStateType_Open;
if (![ClientConfig shareConfig].canOpen) { self.faceButton.hidden = NO;
self.faceButton.hidden = YES; } else {
} else { self.micButton.hidden = YES;
self.faceButton.hidden = NO;
}
} else {
self.micButton.hidden = YES;
self.faceButton.hidden = YES; self.faceButton.hidden = YES;
} }
} }
- (void)onRoomEntered { - (void)onRoomEntered {
NSInteger unreadCount = [[NIMSDK sharedSDK].conversationManager allUnreadCount]; NSInteger unreadCount = [[NIMSDK sharedSDK].conversationManager allUnreadCount];
self.messageButton.selected = unreadCount > 0; self.messageButton.selected = unreadCount > 0;
[self onRoomUpdate]; [self onRoomUpdate];
} }
- (void)onRoomUpdate { - (void)onRoomUpdate {
RoomInfoModel * roomInfo = self.delegate.getRoomInfo; RoomInfoModel * roomInfo = self.delegate.getRoomInfo;
UserInfoModel * userInfo = self.delegate.getUserInfo; UserInfoModel * userInfo = self.delegate.getUserInfo;
if (userInfo.isFirstCharge) { if (userInfo.isFirstCharge) {
[self.giftButton setImage:[UIImage imageNamed:@"room_menu_gift_first_recharge"] forState:UIControlStateNormal]; [self.giftButton setImage:[UIImage imageNamed:@"room_menu_gift_first_recharge"] forState:UIControlStateNormal];
[self.giftButton setImage:[UIImage imageNamed:@"room_menu_gift_first_recharge"] forState:UIControlStateSelected]; [self.giftButton setImage:[UIImage imageNamed:@"room_menu_gift_first_recharge"] forState:UIControlStateSelected];
} else { } else {
[self.giftButton setImage:[UIImage imageNamed:@"room_menu_gift"] forState:UIControlStateNormal]; [self.giftButton setImage:[UIImage imageNamed:@"room_menu_gift"] forState:UIControlStateNormal];
[self.giftButton setImage:[UIImage imageNamed:@"room_menu_gift"] forState:UIControlStateSelected]; [self.giftButton setImage:[UIImage imageNamed:@"room_menu_gift"] forState:UIControlStateSelected];
} }
if (![ClientConfig shareConfig].canOpen) { self.arrangeMicButton.hidden = roomInfo.roomModeType != RoomModeType_Open_Micro_Mode;
[self.giftButton setImage:[UIImage imageNamed:@"room_menu_gift1"] forState:UIControlStateNormal]; if (roomInfo.roomModeType == RoomModeType_Open_Blind || roomInfo.roomModeType == RoomModeType_Open_PK_Mode || roomInfo.roomModeType == RoomModeType_Open_Micro_Mode) {
[self.giftButton setImage:[UIImage imageNamed:@"room_menu_gift1"] forState:UIControlStateSelected]; NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init];
} request.roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId];
request.userIds = @[[AccountInfoStorage instance].getUid];
self.arrangeMicButton.hidden = roomInfo.roomModeType != RoomModeType_Open_Micro_Mode; [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray<NIMChatroomMember *> * _Nullable members) {
if (roomInfo.roomModeType == RoomModeType_Open_Blind || roomInfo.roomModeType == RoomModeType_Open_PK_Mode || roomInfo.roomModeType == RoomModeType_Open_Micro_Mode) { if (error == nil) {
NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; NIMChatroomMember * member = members.firstObject;
request.roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId]; if (member.type == NIMChatroomMemberTypeCreator || member.type == NIMChatroomMemberTypeManager) {
request.userIds = @[[AccountInfoStorage instance].getUid]; self.arrangeMicButton.hidden = NO;
[[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray<NIMChatroomMember *> * _Nullable members) { return;
if (error == nil) { }
NIMChatroomMember * member = members.firstObject; }
if (member.type == NIMChatroomMemberTypeCreator || member.type == NIMChatroomMemberTypeManager) { self.arrangeMicButton.hidden = YES;
self.arrangeMicButton.hidden = NO; }];
return; }
}
}
self.arrangeMicButton.hidden = YES;
}];
}
} }
- (void)handleNIMCustomMessage:(NIMMessage *)message { - (void)handleNIMCustomMessage:(NIMMessage *)message {
NIMCustomObject *obj = (NIMCustomObject *)message.messageObject; NIMCustomObject *obj = (NIMCustomObject *)message.messageObject;
if (obj.attachment != nil && [obj.attachment isKindOfClass:[AttachmentModel class]]) { if (obj.attachment != nil && [obj.attachment isKindOfClass:[AttachmentModel class]]) {
AttachmentModel *attachment = (AttachmentModel *)obj.attachment; AttachmentModel *attachment = (AttachmentModel *)obj.attachment;
if (attachment.first == CustomMessageType_Arrange_Mic || attachment.first == CustomMessageType_Room_PK) { if (attachment.first == CustomMessageType_Arrange_Mic || attachment.first == CustomMessageType_Room_PK) {
if (attachment.second == Custom_Message_Sub_Arrange_Mic_Non_Empty || attachment.second == Custom_Message_Sub_Arrange_Mic_Empty || attachment.second == Custom_Message_Sub_Room_PK_Empty || attachment.second == Custom_Message_Sub_Room_PK_Non_Empty) { if (attachment.second == Custom_Message_Sub_Arrange_Mic_Non_Empty || attachment.second == Custom_Message_Sub_Arrange_Mic_Empty || attachment.second == Custom_Message_Sub_Room_PK_Empty || attachment.second == Custom_Message_Sub_Room_PK_Non_Empty) {
NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init]; NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init];
request.roomId = [NSString stringWithFormat:@"%ld", self.delegate.getRoomInfo.roomId]; request.roomId = [NSString stringWithFormat:@"%ld", self.delegate.getRoomInfo.roomId];
request.userIds = @[[AccountInfoStorage instance].getUid]; request.userIds = @[[AccountInfoStorage instance].getUid];
[[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray<NIMChatroomMember *> * _Nullable members) { [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray<NIMChatroomMember *> * _Nullable members) {
NIMChatroomMember * member; NIMChatroomMember * member;
if (error == nil) { if (error == nil) {
member = members.firstObject; member = members.firstObject;
} }
if (member.type == NIMChatroomMemberTypeCreator || member.type == NIMChatroomMemberTypeManager) { if (member.type == NIMChatroomMemberTypeCreator || member.type == NIMChatroomMemberTypeManager) {
self.arrangeMicButton.selected = (attachment.second == Custom_Message_Sub_Arrange_Mic_Non_Empty || attachment.second == Custom_Message_Sub_Room_PK_Non_Empty); self.arrangeMicButton.selected = (attachment.second == Custom_Message_Sub_Arrange_Mic_Non_Empty || attachment.second == Custom_Message_Sub_Room_PK_Non_Empty);
}; };
}]; }];
} }
} }
} }
} }
- (void)handleNIMNotificationMessage:(NIMMessage *)message { - (void)handleNIMNotificationMessage:(NIMMessage *)message {
NIMNotificationObject *notiMsg = (NIMNotificationObject *)message.messageObject; NIMNotificationObject *notiMsg = (NIMNotificationObject *)message.messageObject;
NIMChatroomNotificationContent *content = (NIMChatroomNotificationContent *)notiMsg.content; NIMChatroomNotificationContent *content = (NIMChatroomNotificationContent *)notiMsg.content;
switch (content.eventType) { switch (content.eventType) {
case NIMChatroomEventTypeAddManager: case NIMChatroomEventTypeAddManager:
{ {
if (self.delegate.getRoomInfo.roomModeType == RoomModeType_Open_Blind || self.delegate.getRoomInfo.roomModeType == RoomModeType_Open_PK_Mode) { if (self.delegate.getRoomInfo.roomModeType == RoomModeType_Open_Blind || self.delegate.getRoomInfo.roomModeType == RoomModeType_Open_PK_Mode) {
for (NIMChatroomNotificationMember * member in content.targets) { for (NIMChatroomNotificationMember * member in content.targets) {
if (member.userId.intValue == [AccountInfoStorage instance].getUid.integerValue) { if (member.userId.intValue == [AccountInfoStorage instance].getUid.integerValue) {
self.arrangeMicButton.hidden = NO; self.arrangeMicButton.hidden = NO;
break; break;
} }
} }
} }
} }
break; break;
case NIMChatroomEventTypeRemoveManager: case NIMChatroomEventTypeRemoveManager:
{ {
if (self.delegate.getRoomInfo.roomModeType == RoomModeType_Open_Blind || self.delegate.getRoomInfo.roomModeType == RoomModeType_Open_PK_Mode) { if (self.delegate.getRoomInfo.roomModeType == RoomModeType_Open_Blind || self.delegate.getRoomInfo.roomModeType == RoomModeType_Open_PK_Mode) {
for (NIMChatroomNotificationMember * member in content.targets) { for (NIMChatroomNotificationMember * member in content.targets) {
if (member.userId.intValue == [AccountInfoStorage instance].getUid.integerValue) { if (member.userId.intValue == [AccountInfoStorage instance].getUid.integerValue) {
self.arrangeMicButton.hidden = YES; self.arrangeMicButton.hidden = YES;
break; break;
} }
} }
} }
} }
break; break;
default: default:
break; break;
} }
} }
- (void)addNIMRecentSession:(NIMRecentSession *)session { - (void)addNIMRecentSession:(NIMRecentSession *)session {
if (!self.miniMessageView.superview) { if (!self.miniMessageView.superview) {
[self.superview insertSubview:self.miniMessageView aboveSubview:self]; [self.superview insertSubview:self.miniMessageView aboveSubview:self];
[self.miniMessageView mas_makeConstraints:^(MASConstraintMaker *make) { [self.miniMessageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerX.mas_equalTo(self.messageButton); make.centerX.mas_equalTo(self.messageButton);
make.bottom.mas_equalTo(self.messageButton.mas_top).offset(-2); make.bottom.mas_equalTo(self.messageButton.mas_top).offset(-2);
make.size.mas_equalTo(CGSizeMake(87, 55)); make.size.mas_equalTo(CGSizeMake(87, 55));
}]; }];
} }
[self.miniMessageView addRecentSession:session]; [self.miniMessageView addRecentSession:session];
NSInteger unreadCount = [[NIMSDK sharedSDK].conversationManager allUnreadCount]; NSInteger unreadCount = [[NIMSDK sharedSDK].conversationManager allUnreadCount];
self.messageButton.selected = unreadCount > 0; self.messageButton.selected = unreadCount > 0;
} }
- (void)removeNIMRecentSession:(NIMRecentSession *)session { - (void)removeNIMRecentSession:(NIMRecentSession *)session {
NSInteger unreadCount = [[NIMSDK sharedSDK].conversationManager allUnreadCount]; NSInteger unreadCount = [[NIMSDK sharedSDK].conversationManager allUnreadCount];
self.messageButton.selected = unreadCount > 0; self.messageButton.selected = unreadCount > 0;
} }
#pragma mark - XPRoomMessageBubbleViewDelegate #pragma mark - XPRoomMessageBubbleViewDelegate
- (void)xPRoomMessageBubbleView:(XPRoomMessageBubbleView *)view didSelectSession:(NIMRecentSession *)session { - (void)xPRoomMessageBubbleView:(XPRoomMessageBubbleView *)view didSelectSession:(NIMRecentSession *)session {
UIViewController * controller = (UIViewController *)self.delegate; UIViewController * controller = (UIViewController *)self.delegate;
XPRoomHalfMessageView *halfMessageView = [[XPRoomHalfMessageView alloc] initWithFrame:CGRectMake(0, KScreenHeight, KScreenWidth, KScreenHeight) controller:controller]; XPRoomHalfMessageView *halfMessageView = [[XPRoomHalfMessageView alloc] initWithFrame:CGRectMake(0, KScreenHeight, KScreenWidth, KScreenHeight) controller:controller];
halfMessageView.chatUserId = session.session.sessionId; halfMessageView.chatUserId = session.session.sessionId;
[controller.view addSubview:halfMessageView]; [controller.view addSubview:halfMessageView];
[UIView animateWithDuration:.35 animations:^{ [UIView animateWithDuration:.35 animations:^{
CGRect rect = halfMessageView.frame; CGRect rect = halfMessageView.frame;
rect.origin.y = 0; rect.origin.y = 0;
halfMessageView.frame = rect; halfMessageView.frame = rect;
}]; }];
} }
#pragma mark - Getters And Setters #pragma mark - Getters And Setters
- (UIButton *)inputButton { - (UIButton *)inputButton {
if (!_inputButton) { if (!_inputButton) {
_inputButton = [UIButton buttonWithType:UIButtonTypeCustom]; _inputButton = [UIButton buttonWithType:UIButtonTypeCustom];
if ([ClientConfig shareConfig].canOpen) { [_inputButton setTitle:YMLocalizedString(@"XPRoomMenuContainerView2") forState:UIControlStateNormal];
[_inputButton setTitle:YMLocalizedString(@"XPRoomMenuContainerView2") forState:UIControlStateNormal]; [_inputButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
} else { _inputButton.titleLabel.font = [UIFont systemFontOfSize:12];
[_inputButton setTitle:YMLocalizedString(@"XPRoomMenuContainerView3") forState:UIControlStateNormal]; _inputButton.layer.masksToBounds = YES;
} _inputButton.layer.cornerRadius = 15;
[_inputButton setBackgroundImage:[UIImage imageNamed:@"room_menu_send_bg"] forState:UIControlStateNormal];
[_inputButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; _inputButton.tag = XPRoomMenuItemType_Input;
_inputButton.titleLabel.font = [UIFont systemFontOfSize:15]; [_inputButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside];
_inputButton.layer.masksToBounds = YES; }
_inputButton.layer.cornerRadius = 15; return _inputButton;
_inputButton.backgroundColor = UIColorRGBAlpha(0xFFFFFF, 0.3);
_inputButton.tag = XPRoomMenuItemType_Input;
[_inputButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside];
}
return _inputButton;
} }
- (UIButton *)micButton { - (UIButton *)micButton {
if (!_micButton) { if (!_micButton) {
_micButton = [UIButton buttonWithType:UIButtonTypeCustom]; _micButton = [UIButton buttonWithType:UIButtonTypeCustom];
[_micButton setImage:[UIImage imageNamed:@"room_menu_mic_open"] forState:UIControlStateNormal]; [_micButton setImage:[UIImage imageNamed:@"room_menu_mic_open"] forState:UIControlStateNormal];
[_micButton setImage:[UIImage imageNamed:@"room_menu_mic_close"] forState:UIControlStateSelected]; [_micButton setImage:[UIImage imageNamed:@"room_menu_mic_close"] forState:UIControlStateSelected];
[_micButton setImage:[UIImage imageNamed:@"room_menu_mic_close"] forState:UIControlStateDisabled | UIControlStateSelected]; [_micButton setImage:[UIImage imageNamed:@"room_menu_mic_close"] forState:UIControlStateDisabled | UIControlStateSelected];
_micButton.tag = XPRoomMenuItemType_Mic; _micButton.tag = XPRoomMenuItemType_Mic;
[_micButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside]; [_micButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside];
_micButton.hidden = YES; _micButton.hidden = YES;
} }
return _micButton; return _micButton;
}
- (UIButton *)voiceButton {
if (!_voiceButton) {
_voiceButton = [UIButton buttonWithType:UIButtonTypeCustom];
[_voiceButton setImage:[UIImage imageNamed:@"room_menu_voice_open"] forState:UIControlStateNormal];
[_voiceButton setImage:[UIImage imageNamed:@"room_menu_voice_close"] forState:UIControlStateSelected];
_voiceButton.tag = XPRoomMenuItemType_Voice;
[_voiceButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside];
}
return _voiceButton;
} }
- (UIButton *)faceButton { - (UIButton *)faceButton {
if (!_faceButton) { if (!_faceButton) {
_faceButton = [UIButton buttonWithType:UIButtonTypeCustom]; _faceButton = [UIButton buttonWithType:UIButtonTypeCustom];
[_faceButton setImage:[UIImage imageNamed:@"room_menu_face"] forState:UIControlStateNormal]; [_faceButton setImage:[UIImage imageNamed:@"room_menu_face"] forState:UIControlStateNormal];
[_faceButton setImage:[UIImage imageNamed:@"room_menu_face"] forState:UIControlStateSelected]; [_faceButton setImage:[UIImage imageNamed:@"room_menu_face"] forState:UIControlStateSelected];
_faceButton.tag = XPRoomMenuItemType_Face; _faceButton.tag = XPRoomMenuItemType_Face;
[_faceButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside]; [_faceButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside];
_faceButton.hidden = YES; _faceButton.hidden = YES;
} }
return _faceButton; return _faceButton;
} }
- (UIButton *)messageButton { - (UIButton *)messageButton {
if (!_messageButton) { if (!_messageButton) {
_messageButton = [UIButton buttonWithType:UIButtonTypeCustom]; _messageButton = [UIButton buttonWithType:UIButtonTypeCustom];
[_messageButton setImage:[UIImage imageNamed:@"room_menu_message"] forState:UIControlStateNormal]; [_messageButton setImage:[UIImage imageNamed:@"room_menu_message"] forState:UIControlStateNormal];
[_messageButton setImage:[UIImage imageNamed:@"room_menu_new_message"] forState:UIControlStateSelected]; [_messageButton setImage:[UIImage imageNamed:@"room_menu_new_message"] forState:UIControlStateSelected];
_messageButton.tag = XPRoomMenuItemType_Message; _messageButton.tag = XPRoomMenuItemType_Message;
[_messageButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside]; [_messageButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside];
} }
return _messageButton; return _messageButton;
} }
- (UIButton *)moreButton { - (UIButton *)moreButton {
@@ -514,54 +534,54 @@ NSString * const kRoomPlayEnterKey = @"kRoomPlayEnterKey";
} }
- (UIButton *)giftButton { - (UIButton *)giftButton {
if (!_giftButton) { if (!_giftButton) {
_giftButton = [UIButton buttonWithType:UIButtonTypeCustom]; _giftButton = [UIButton buttonWithType:UIButtonTypeCustom];
[_giftButton setImage:[UIImage imageNamed:@"room_menu_gift"] forState:UIControlStateNormal]; [_giftButton setImage:[UIImage imageNamed:@"room_menu_gift"] forState:UIControlStateNormal];
[_giftButton setImage:[UIImage imageNamed:@"room_menu_gift"] forState:UIControlStateSelected]; [_giftButton setImage:[UIImage imageNamed:@"room_menu_gift"] forState:UIControlStateSelected];
_giftButton.tag = XPRoomMenuItemType_Gift; _giftButton.tag = XPRoomMenuItemType_Gift;
[_giftButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside]; [_giftButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside];
} }
return _giftButton; return _giftButton;
} }
- (UIStackView *)stackView { - (UIStackView *)stackView {
if (!_stackView) { if (!_stackView) {
_stackView = [[UIStackView alloc] init]; _stackView = [[UIStackView alloc] init];
_stackView.axis = UILayoutConstraintAxisHorizontal; _stackView.axis = UILayoutConstraintAxisHorizontal;
_stackView.distribution = UIStackViewDistributionFill; _stackView.distribution = UIStackViewDistributionFill;
_stackView.alignment = UIStackViewAlignmentCenter; _stackView.alignment = UIStackViewAlignmentCenter;
_stackView.spacing = 8; _stackView.spacing = 12;
} }
return _stackView; return _stackView;
} }
- (UIButton *)arrangeMicButton { - (UIButton *)arrangeMicButton {
if (!_arrangeMicButton) { if (!_arrangeMicButton) {
_arrangeMicButton = [UIButton buttonWithType:UIButtonTypeCustom]; _arrangeMicButton = [UIButton buttonWithType:UIButtonTypeCustom];
[_arrangeMicButton setImage:[UIImage imageNamed:@"room_menu_arrange_mic"] forState:UIControlStateNormal]; [_arrangeMicButton setImage:[UIImage imageNamed:@"room_menu_arrange_mic"] forState:UIControlStateNormal];
[_arrangeMicButton setImage:[UIImage imageNamed:@"room_menu_arrange_mic_new"] forState:UIControlStateSelected]; [_arrangeMicButton setImage:[UIImage imageNamed:@"room_menu_arrange_mic_new"] forState:UIControlStateSelected];
_arrangeMicButton.tag = XPRoomMenuItemType_ArrangeMic; _arrangeMicButton.tag = XPRoomMenuItemType_ArrangeMic;
[_arrangeMicButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside]; [_arrangeMicButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside];
_arrangeMicButton.hidden = YES; _arrangeMicButton.hidden = YES;
} }
return _arrangeMicButton; return _arrangeMicButton;
} }
- (UIScrollView *)scrollView { - (UIScrollView *)scrollView {
if (!_scrollView) { if (!_scrollView) {
_scrollView = [[UIScrollView alloc] init]; _scrollView = [[UIScrollView alloc] init];
_scrollView.backgroundColor = [UIColor clearColor]; _scrollView.backgroundColor = [UIColor clearColor];
_scrollView.showsHorizontalScrollIndicator = NO; _scrollView.showsHorizontalScrollIndicator = NO;
} }
return _scrollView; return _scrollView;
} }
- (XPRoomMessageBubbleView *)miniMessageView { - (XPRoomMessageBubbleView *)miniMessageView {
if (!_miniMessageView) { if (!_miniMessageView) {
_miniMessageView = [[XPRoomMessageBubbleView alloc] init]; _miniMessageView = [[XPRoomMessageBubbleView alloc] init];
_miniMessageView.delegate = self; _miniMessageView.delegate = self;
} }
return _miniMessageView; return _miniMessageView;
} }
@end @end

View File

@@ -11,7 +11,7 @@ NS_ASSUME_NONNULL_BEGIN
@interface XPRoomSendTextView : UIView @interface XPRoomSendTextView : UIView
- (instancetype) :(id<RoomHostDelegate>)delegate; - (instancetype)initWithDelegate:(id<RoomHostDelegate>)delegate;
///输入框 ///输入框
@property (nonatomic, strong, readonly) UITextField *editTextFiled; @property (nonatomic, strong, readonly) UITextField *editTextFiled;
///发小消息的弹框 ///发小消息的弹框

View File

@@ -1,8 +1,8 @@
// //
// YMRoomSendTextView.m // XPRoomSendTextView.m
// YUMI // xplan-ios
// //
// Created by YUMI on 2021/10/29. // Created by on 2021/10/29.
// //
#import "XPRoomSendTextView.h" #import "XPRoomSendTextView.h"
@@ -13,11 +13,8 @@
#import <IQKeyboardManager/IQKeyboardManager.h> #import <IQKeyboardManager/IQKeyboardManager.h>
///Tool ///Tool
#import "ThemeColor+Room.h" #import "ThemeColor+Room.h"
#import "YUMIMacroUitls.h"
#import "UIImage+Utils.h" #import "UIImage+Utils.h"
#import "YUMIConstant.h"
#import "AccountInfoStorage.h" #import "AccountInfoStorage.h"
#import "NSMutableDictionary+Saft.h"
///Model ///Model
#import "XPMessageRemoteExtModel.h" #import "XPMessageRemoteExtModel.h"
#import "UserInfoModel.h" #import "UserInfoModel.h"
@@ -46,39 +43,39 @@
@implementation XPRoomSendTextView @implementation XPRoomSendTextView
- (void)dealloc { - (void)dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self]; [[NSNotificationCenter defaultCenter] removeObserver:self];
} }
- (instancetype)initWithDelegate:(id<RoomHostDelegate>)delegate { - (instancetype)initWithDelegate:(id<RoomHostDelegate>)delegate {
self = [super initWithFrame:CGRectMake(0, KScreenHeight - 40, KScreenWidth, 40)]; self = [super initWithFrame:CGRectMake(0, KScreenHeight - 40, KScreenWidth, 40)];
if (self) { if (self) {
self.delegate = delegate; self.delegate = delegate;
[self addNotification]; [self addNotification];
[self initSubViews]; [self initSubViews];
[self initSubViewConstraints]; [self initSubViewConstraints];
[IQKeyboardManager sharedManager].enable = NO; [IQKeyboardManager sharedManager].enable = NO;
} }
return self; return self;
} }
#pragma mark - Response #pragma mark - Response
- (void)sendButtonDidClick:(UIButton *)sender { - (void)sendButtonDidClick:(UIButton *)sender {
UserInfoModel * userInfo = [self.delegate getUserInfo]; UserInfoModel * userInfo = [self.delegate getUserInfo];
XPMessageRemoteExtModel *extModel = [[XPMessageRemoteExtModel alloc] init]; XPMessageRemoteExtModel *extModel = [[XPMessageRemoteExtModel alloc] init];
extModel.defUser = userInfo.defUser; extModel.defUser = userInfo.defUser;
extModel.erbanNo = userInfo.erbanNo; extModel.erbanNo = userInfo.erbanNo;
extModel.carName = userInfo.carName; extModel.carName = userInfo.carName;
extModel.inRoomNameplatePic = userInfo.nameplatePic; extModel.inRoomNameplatePic = userInfo.nameplatePic;
extModel.inRoomNameplateWord = userInfo.nameplateWord; extModel.inRoomNameplateWord = userInfo.nameplateWord;
extModel.charmUrl = userInfo.userLevelVo.charmUrl; extModel.charmUrl = userInfo.userLevelVo.charmUrl;
extModel.experLevelSeq = userInfo.userLevelVo.experLevelSeq; extModel.experLevelSeq = userInfo.userLevelVo.experLevelSeq;
extModel.experUrl = userInfo.userLevelVo.experUrl; extModel.experUrl = userInfo.userLevelVo.experUrl;
extModel.newUser = userInfo.newUser; extModel.newUser = userInfo.newUser;
extModel.vipIcon = userInfo.userVipInfoVO.vipIcon; extModel.vipIcon = userInfo.userVipInfoVO.vipIcon;
extModel.androidBubbleUrl = userInfo.androidBubbleUrl; extModel.androidBubbleUrl = userInfo.androidBubbleUrl;
extModel.iosBubbleUrl = userInfo.iosBubbleUrl; extModel.iosBubbleUrl = userInfo.iosBubbleUrl;
extModel.fromSayHelloChannel = userInfo.fromSayHelloChannel; extModel.fromSayHelloChannel = userInfo.fromSayHelloChannel;
NIMMessage * message = [[NIMMessage alloc] init]; NIMMessage * message = [[NIMMessage alloc] init];
message.text = self.inputMessage; message.text = self.inputMessage;
@@ -99,25 +96,26 @@
} }
id uidStr = [uidArray toJSONObject]; id uidStr = [uidArray toJSONObject];
id nickStr = [nickArray toJSONObject]; id nickStr = [nickArray toJSONObject];
[remoteExt safeSetObject:uidStr forKey:@"atUids"]; [remoteExt setObject:uidStr forKey:@"atUids"];
[remoteExt safeSetObject:nickStr forKey:@"atNames"]; [remoteExt setObject:nickStr forKey:@"atNames"];
message.remoteExt = remoteExt; message.remoteExt = remoteExt;
/// ///
NIMAntiSpamOption *option = [[NIMAntiSpamOption alloc]init]; NIMAntiSpamOption *option = [[NIMAntiSpamOption alloc]init];
option.yidunEnabled = YES; option.yidunEnabled = YES;
option.businessId = KeyWithType(keyType_YiDunBussinessId); option.businessId = KeyWithType(keyType_YiDunBussinessId);
message.antiSpamOption = option; message.antiSpamOption = option;
NSString * sessionId = [NSString stringWithFormat:@"%ld", [self.delegate getRoomInfo].roomId]; NSString * sessionId = [NSString stringWithFormat:@"%ld", [self.delegate getRoomInfo].roomId];
// //
NIMSession *session = [NIMSession session:sessionId type:NIMSessionTypeChatroom]; self.sendButton.enabled = NO;
[[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session completion:^(NSError * _Nullable error) { NIMSession *session = [NIMSession session:sessionId type:NIMSessionTypeChatroom];
self.editTextFiled.text = @""; [[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session completion:^(NSError * _Nullable error) {
[self.editTextFiled resignFirstResponder]; self.editTextFiled.text = @"";
[self.editTextFiled resignFirstResponder];
[self.atUids removeAllObjects]; [self.atUids removeAllObjects];
[self.atNames removeAllObjects]; [self.atNames removeAllObjects];
self.inputMessage = nil; self.inputMessage = nil;
}]; }];
} }
- (void)keyboardWillShow:(NSNotification *)notification { - (void)keyboardWillShow:(NSNotification *)notification {
@@ -130,11 +128,13 @@
CGRect endKeyboardRect = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue]; CGRect endKeyboardRect = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
CGFloat h = endKeyboardRect.size.height; CGFloat h = endKeyboardRect.size.height;
[UIView animateWithDuration:duration animations:^{ [UIView animateWithDuration:duration animations:^{
[self mas_remakeConstraints:^(MASConstraintMaker *make) { if(self.superview){
make.left.right.equalTo(self.superview); [self mas_remakeConstraints:^(MASConstraintMaker *make) {
make.height.equalTo(@40); make.left.right.equalTo(self.superview);
make.bottom.equalTo(self.superview).offset(-h); make.height.equalTo(@40);
}]; make.bottom.equalTo(self.superview).offset(-h);
}];
}
[UIView setAnimationBeginsFromCurrentState:YES]; [UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationCurve:[curve intValue]]; [UIView setAnimationCurve:[curve intValue]];
self.center = CGPointMake(self.center.x, keyBoardEndY - statusbarHeight - self.bounds.size.height/2.0); self.center = CGPointMake(self.center.x, keyBoardEndY - statusbarHeight - self.bounds.size.height/2.0);
@@ -155,68 +155,68 @@
} }
-(void)textFieldEditChanged:(NSNotification *)notification{ -(void)textFieldEditChanged:(NSNotification *)notification{
UITextField *textField = (UITextField *)notification.object; UITextField *textField = (UITextField *)notification.object;
NSString *toBeString = textField.text; NSString *toBeString = textField.text;
NSString *lang = [textField.textInputMode primaryLanguage]; NSString *lang = [textField.textInputMode primaryLanguage];
if ([lang isEqualToString:@"zh-Hans"]){// if ([lang isEqualToString:@"zh-Hans"]){//
// //
UITextRange *selectedRange = [textField markedTextRange]; UITextRange *selectedRange = [textField markedTextRange];
UITextPosition *position = [textField positionFromPosition:selectedRange.start offset:0]; UITextPosition *position = [textField positionFromPosition:selectedRange.start offset:0];
// //
if (!position){ if (!position){
if (toBeString.length > MAX_STARWORDS_LENGTH){ if (toBeString.length > MAX_STARWORDS_LENGTH){
NSRange rangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:MAX_STARWORDS_LENGTH]; NSRange rangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:MAX_STARWORDS_LENGTH];
if (rangeIndex.length == 1){ if (rangeIndex.length == 1){
textField.text = [toBeString substringToIndex:MAX_STARWORDS_LENGTH]; textField.text = [toBeString substringToIndex:MAX_STARWORDS_LENGTH];
}else{ }else{
NSRange rangeRange = [toBeString rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, MAX_STARWORDS_LENGTH)]; NSRange rangeRange = [toBeString rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, MAX_STARWORDS_LENGTH)];
textField.text = [toBeString substringWithRange:rangeRange]; textField.text = [toBeString substringWithRange:rangeRange];
} }
} }
} }
}else{ // }else{ //
if (toBeString.length > MAX_STARWORDS_LENGTH){ if (toBeString.length > MAX_STARWORDS_LENGTH){
NSRange rangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:MAX_STARWORDS_LENGTH]; NSRange rangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:MAX_STARWORDS_LENGTH];
if (rangeIndex.length == 1){ if (rangeIndex.length == 1){
textField.text = [toBeString substringToIndex:MAX_STARWORDS_LENGTH]; textField.text = [toBeString substringToIndex:MAX_STARWORDS_LENGTH];
}else{ }else{
NSRange rangeRange = [toBeString rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, MAX_STARWORDS_LENGTH)]; NSRange rangeRange = [toBeString rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, MAX_STARWORDS_LENGTH)];
textField.text = [toBeString substringWithRange:rangeRange]; textField.text = [toBeString substringWithRange:rangeRange];
} }
} }
} }
self.inputMessage = textField.text; self.inputMessage = textField.text;
if (self.inputMessage.length > 0) { if (self.inputMessage.length > 0) {
self.sendButton.enabled = YES; self.sendButton.enabled = YES;
} else { } else {
self.sendButton.enabled = NO; self.sendButton.enabled = NO;
} }
} }
#pragma mark - Public Method #pragma mark - Public Method
+ (instancetype)showTextView:(UIView *)view delegate:(id<RoomHostDelegate>)delegate atUid:(NSString *)uid atNick:(NSString *)nick { + (instancetype)showTextView:(UIView *)view delegate:(id<RoomHostDelegate>)delegate atUid:(NSString *)uid atNick:(NSString *)nick {
__block XPRoomSendTextView * textView; __block XPRoomSendTextView * textView;
[view.subviews enumerateObjectsUsingBlock:^(__kindof UIView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { [view.subviews enumerateObjectsUsingBlock:^(__kindof UIView * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
if ([obj isKindOfClass:[XPRoomSendTextView class]]) { if ([obj isKindOfClass:[XPRoomSendTextView class]]) {
textView = obj; textView = obj;
*stop = YES; *stop = YES;
} }
}]; }];
if (textView == nil) { if (textView == nil) {
textView = [[XPRoomSendTextView alloc] initWithDelegate:delegate]; textView = [[XPRoomSendTextView alloc] initWithDelegate:delegate];
[view addSubview:textView]; [view addSubview:textView];
} }
textView.hidden = NO; textView.hidden = NO;
[textView mas_makeConstraints:^(MASConstraintMaker *make) { [textView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.bottom.mas_equalTo(view); make.left.right.bottom.mas_equalTo(view);
make.height.mas_equalTo(40); make.height.mas_equalTo(40);
}]; }];
[textView.editTextFiled becomeFirstResponder]; [textView.editTextFiled becomeFirstResponder];
if (nick) { if (nick) {
[textView.atUids addObject:uid]; [textView.atUids addObject:uid];
[textView.atNames addObject:[NSString stringWithFormat:@"@%@", nick]]; [textView.atNames addObject:[NSString stringWithFormat:@"@%@", nick]];
@@ -224,75 +224,75 @@
textView.inputMessage = textView.editTextFiled.text; textView.inputMessage = textView.editTextFiled.text;
textView.sendButton.enabled = YES; textView.sendButton.enabled = YES;
} }
return textView; return textView;
} }
#pragma mark - Private Method #pragma mark - Private Method
- (void)initSubViews { - (void)initSubViews {
self.backgroundColor = [DJDKMIMOMColor appBackgroundColor]; self.backgroundColor = [DJDKMIMOMColor appBackgroundColor];
[self addSubview:self.stackView]; [self addSubview:self.stackView];
[self.stackView addArrangedSubview:self.editTextFiled]; [self.stackView addArrangedSubview:self.editTextFiled];
[self.stackView addArrangedSubview:self.sendButton]; [self.stackView addArrangedSubview:self.sendButton];
} }
- (void)initSubViewConstraints { - (void)initSubViewConstraints {
[self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(self).offset(8); make.left.mas_equalTo(self).offset(8);
make.right.mas_equalTo(self).offset(-5); make.right.mas_equalTo(self).offset(-5);
make.top.bottom.mas_equalTo(self); make.top.bottom.mas_equalTo(self);
}]; }];
[self.sendButton mas_makeConstraints:^(MASConstraintMaker *make) { [self.sendButton mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.mas_equalTo(50); make.width.mas_equalTo(50);
make.top.bottom.mas_equalTo(self).inset(5); make.top.bottom.mas_equalTo(self).inset(5);
}]; }];
} }
- (void)addNotification { - (void)addNotification {
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHidden:) name:UIKeyboardWillHideNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHidden:) name:UIKeyboardWillHideNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textFieldEditChanged:) name:UITextFieldTextDidChangeNotification object:self.editTextFiled]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textFieldEditChanged:) name:UITextFieldTextDidChangeNotification object:self.editTextFiled];
} }
#pragma mark - Getters And Setters #pragma mark - Getters And Setters
- (UITextField *)editTextFiled{ - (UITextField *)editTextFiled{
if (!_editTextFiled) { if (!_editTextFiled) {
_editTextFiled = [[UITextField alloc] init]; _editTextFiled = [[UITextField alloc] init];
NSAttributedString * attribute = [[NSAttributedString alloc] initWithString:YMLocalizedString(@"XPRoomSendTextView0") attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:15], NSForegroundColorAttributeName : [DJDKMIMOMColor secondTextColor]}]; NSAttributedString * attribute = [[NSAttributedString alloc] initWithString:YMLocalizedString(@"XPRoomSendTextView0") attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:15], NSForegroundColorAttributeName : [DJDKMIMOMColor secondTextColor]}];
_editTextFiled.attributedPlaceholder = attribute; _editTextFiled.attributedPlaceholder = attribute;
_editTextFiled.borderStyle = UITextBorderStyleNone; _editTextFiled.borderStyle = UITextBorderStyleNone;
_editTextFiled.textColor = [DJDKMIMOMColor alertTitleColor]; _editTextFiled.textColor = [DJDKMIMOMColor alertTitleColor];
_editTextFiled.font = [UIFont systemFontOfSize:15]; _editTextFiled.font = [UIFont systemFontOfSize:15];
[_editTextFiled setContentHuggingPriority:UILayoutPriorityDefaultLow forAxis:UILayoutConstraintAxisHorizontal]; [_editTextFiled setContentHuggingPriority:UILayoutPriorityDefaultLow forAxis:UILayoutConstraintAxisHorizontal];
} }
return _editTextFiled; return _editTextFiled;
} }
- (UIButton *)sendButton{ - (UIButton *)sendButton{
if (!_sendButton) { if (!_sendButton) {
_sendButton = [[UIButton alloc] init]; _sendButton = [[UIButton alloc] init];
[_sendButton setTitle:YMLocalizedString(@"XPRoomSendTextView1") forState:UIControlStateNormal]; [_sendButton setTitle:YMLocalizedString(@"XPRoomSendTextView1") forState:UIControlStateNormal];
_sendButton.titleLabel.textColor = [DJDKMIMOMColor mainTextColor]; _sendButton.titleLabel.textColor = [DJDKMIMOMColor mainTextColor];
_sendButton.titleLabel.font = [UIFont systemFontOfSize:15]; _sendButton.titleLabel.font = [UIFont systemFontOfSize:15];
[_sendButton setBackgroundImage:[UIImage imageWithColor:[DJDKMIMOMColor disableButtonColor] ]forState:UIControlStateDisabled]; [_sendButton setBackgroundImage:[UIImage imageWithColor:[DJDKMIMOMColor disableButtonColor] ]forState:UIControlStateDisabled];
[_sendButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal]; [_sendButton setBackgroundImage:[UIImage gradientColorImageFromColors:@[[DJDKMIMOMColor confirmButtonGradientStartColor], [DJDKMIMOMColor confirmButtonGradientEndColor]] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(10, 10)] forState:UIControlStateNormal];
_sendButton.enabled = NO; _sendButton.enabled = NO;
_sendButton.layer.cornerRadius = 5.0; _sendButton.layer.cornerRadius = 5.0;
_sendButton.layer.masksToBounds = YES; _sendButton.layer.masksToBounds = YES;
[_sendButton addTarget:self action:@selector(sendButtonDidClick:) forControlEvents:UIControlEventTouchUpInside]; [_sendButton addTarget:self action:@selector(sendButtonDidClick:) forControlEvents:UIControlEventTouchUpInside];
} }
return _sendButton; return _sendButton;
} }
- (UIStackView *)stackView { - (UIStackView *)stackView {
if (!_stackView) { if (!_stackView) {
_stackView = [[UIStackView alloc] init]; _stackView = [[UIStackView alloc] init];
_stackView.axis = UILayoutConstraintAxisHorizontal; _stackView.axis = UILayoutConstraintAxisHorizontal;
_stackView.distribution = UIStackViewDistributionFill; _stackView.distribution = UIStackViewDistributionFill;
_stackView.alignment = UIStackViewAlignmentCenter; _stackView.alignment = UIStackViewAlignmentCenter;
_stackView.spacing = 10; _stackView.spacing = 10;
} }
return _stackView; return _stackView;
} }
- (NSMutableArray *)atNames { - (NSMutableArray *)atNames {

View File

@@ -123,12 +123,7 @@
redPacket.type = RoomMoreMenuType_Room_redPacket; redPacket.type = RoomMoreMenuType_Room_redPacket;
redPacket.titleColor = [DJDKMIMOMColor roomMoreMenuTextColor]; redPacket.titleColor = [DJDKMIMOMColor roomMoreMenuTextColor];
XPRoomMoreItemModel * voice = [[XPRoomMoreItemModel alloc] init];
voice.title = YMLocalizedString(@"XPMoreMenuPresenter25");
voice.imageName = [RtcManager instance].isRemoteMuted ? @"room_more_voice_close" : @"room_more_voice_open";
voice.type = RoomMoreMenuType_Room_Voice;
voice.titleColor = [DJDKMIMOMColor roomMoreMenuTextColor];
voice.isSelected = [RtcManager instance].isRemoteMuted;
XPRoomMoreItemModel * report = [[XPRoomMoreItemModel alloc] init]; XPRoomMoreItemModel * report = [[XPRoomMoreItemModel alloc] init];
report.title = YMLocalizedString(@"XPMoreMenuPresenter36"); report.title = YMLocalizedString(@"XPMoreMenuPresenter36");
@@ -192,13 +187,13 @@
} else { } else {
[array addObject:giftEffect]; [array addObject:giftEffect];
} }
[array addObject:voice];
if (![ClientConfig shareConfig].canOpen) { if (![ClientConfig shareConfig].canOpen) {
[array removeAllObjects]; [array removeAllObjects];
[array addObject:clearScreen]; [array addObject:clearScreen];
[array addObject:roomSetting]; [array addObject:roomSetting];
[array addObject:voice];
} }
[array addObject:report]; [array addObject:report];
[[self getView] getMoreMenuDataSuccess:array]; [[self getView] getMoreMenuDataSuccess:array];

View File

@@ -354,9 +354,8 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出
make.left.right.mas_equalTo(self.view); make.left.right.mas_equalTo(self.view);
}]; }];
[self.menuContainerView mas_makeConstraints:^(MASConstraintMaker *make) { [self.menuContainerView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.mas_equalTo(self.view); make.left.right.bottom.mas_equalTo(self.view);
make.bottom.mas_equalTo(-kSafeAreaBottomHeight- 8); make.height.mas_equalTo(52 + kSafeAreaBottomHeight);
make.height.mas_equalTo(40);
}]; }];
[self.activityContainerView mas_makeConstraints:^(MASConstraintMaker *make) { [self.activityContainerView mas_makeConstraints:^(MASConstraintMaker *make) {
@@ -404,9 +403,8 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出
make.right.equalTo(self.activityContainerView.mas_left).offset(-10); make.right.equalTo(self.activityContainerView.mas_left).offset(-10);
}]; }];
[self.menuContainerView mas_makeConstraints:^(MASConstraintMaker *make) { [self.menuContainerView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.mas_equalTo(self.anchorScrollView.middleImageView); make.left.right.bottom.mas_equalTo(self.anchorScrollView.middleImageView);
make.bottom.mas_equalTo(self.anchorScrollView.middleImageView).offset(-kSafeAreaBottomHeight- 8); make.height.mas_equalTo(52 + kSafeAreaBottomHeight);
make.height.mas_equalTo(40);
}]; }];
[self.activityContainerView mas_makeConstraints:^(MASConstraintMaker *make) { [self.activityContainerView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.mas_equalTo(self.messageContainerView); make.top.mas_equalTo(self.messageContainerView);

View File

@@ -1099,7 +1099,7 @@
"XPMoreMenuPresenter22" = "邀请粉丝"; "XPMoreMenuPresenter22" = "邀请粉丝";
"XPMoreMenuPresenter23" = "发佈广播"; "XPMoreMenuPresenter23" = "发佈广播";
"XPMoreMenuPresenter24" = "红包"; "XPMoreMenuPresenter24" = "红包";
"XPMoreMenuPresenter25" = "扬声器";
"XPMoreMenuPresenter26" = "PK中..."; "XPMoreMenuPresenter26" = "PK中...";
"XPMoreMenuPresenter27" = "关闭礼物值"; "XPMoreMenuPresenter27" = "关闭礼物值";
"XPMoreMenuPresenter28" = "关闭我的特效"; "XPMoreMenuPresenter28" = "关闭我的特效";

View File

@@ -1099,7 +1099,7 @@
"XPMoreMenuPresenter22" = "邀請粉絲"; "XPMoreMenuPresenter22" = "邀請粉絲";
"XPMoreMenuPresenter23" = "發佈廣播"; "XPMoreMenuPresenter23" = "發佈廣播";
"XPMoreMenuPresenter24" = "紅包"; "XPMoreMenuPresenter24" = "紅包";
"XPMoreMenuPresenter25" = "揚聲器";
"XPMoreMenuPresenter26" = "PK中..."; "XPMoreMenuPresenter26" = "PK中...";
"XPMoreMenuPresenter27" = "關閉禮物值"; "XPMoreMenuPresenter27" = "關閉禮物值";
"XPMoreMenuPresenter28" = "關閉我的特效"; "XPMoreMenuPresenter28" = "關閉我的特效";