排麦的UI

This commit is contained in:
fengshuo
2021-12-20 19:23:00 +08:00
parent da56e1cae9
commit c4b58a33c4
26 changed files with 1187 additions and 3 deletions

View File

@@ -16,6 +16,7 @@ typedef NS_ENUM(NSInteger, XPRoomMenuItemType) {
XPRoomMenuItemType_Face,///表情
XPRoomMenuItemType_Message,///房间私聊
XPRoomMenuItemType_More,///更多
XPRoomMenuItemType_ArrangeMic,///排麦
XPRoomMenuItemType_Gift,///礼物
};

View File

@@ -18,12 +18,13 @@
#import "UserInfoModel.h"
#import "MicroStateModel.h"
#import "RoomInfoModel.h"
#import "AttachmentModel.h"
///View
#import "XPRoomSendTextView.h"
#import "XPSendGiftView.h"
#import "SessionListViewController.h"
#import "XPRoomMoreMenuViewController.h"
#import "XPArrangeMicViewController.h"
@interface XPRoomMenuContainerView ()
///
@@ -42,6 +43,8 @@
@property (nonatomic,strong) UIButton *moreButton;
///
@property (nonatomic,strong) UIButton *giftButton;
///
@property (nonatomic,strong) UIButton *arrangeMicButton;
///
@property (nonatomic,strong) UIView * placeHolderView;
///
@@ -51,7 +54,6 @@
@implementation XPRoomMenuContainerView
- (instancetype)initWithDelegate:(id<RoomHostDelegate>)delegate {
self = [super init];
if (self) {
@@ -97,6 +99,25 @@
case XPRoomMenuItemType_More: {
XPRoomMoreMenuViewController * moreMenuVC = [[XPRoomMoreMenuViewController alloc] initRoomInfo:self.delegate.getRoomInfo];
[self.delegate.getCurrentNav presentViewController:moreMenuVC animated:YES completion:nil];
}
case XPRoomMenuItemType_ArrangeMic:{
self.arrangeMicButton.selected = NO;
NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init];
request.roomId = [NSString stringWithFormat:@"%ld", self.delegate.getRoomInfo.roomId];
request.userIds = @[[AccountInfoStorage instance].getUid];
[[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray<NIMChatroomMember *> * _Nullable members) {
NIMChatroomMember * member;
if (error == nil) {
member = members.firstObject;
}
XPArrangeMicInfoModel * info = [[XPArrangeMicInfoModel alloc] init];
info.roomUid = [NSString stringWithFormat:@"%ld", self.delegate.getRoomInfo.uid];
info.roomId = [NSString stringWithFormat:@"%ld", self.delegate.getRoomInfo.roomId];
info.micQueue = [self.delegate getMicroQueue];
info.isManager = (member.type == NIMChatroomMemberTypeCreator || member.type == NIMChatroomMemberTypeManager);
XPArrangeMicViewController * arrangeMicVC = [[XPArrangeMicViewController alloc] initWithInfo:info];
[self.delegate.getCurrentNav presentViewController:arrangeMicVC animated:YES completion:nil];
}];
}
break;
default:
@@ -111,6 +132,7 @@
[self.stackView addArrangedSubview:self.micButton];
[self.stackView addArrangedSubview:self.voiceButton];
[self.stackView addArrangedSubview:self.faceButton];
[self.stackView addArrangedSubview:self.arrangeMicButton];
[self.stackView addArrangedSubview:self.messageButton];
[self.stackView addArrangedSubview:self.moreButton];
[self.stackView addArrangedSubview:self.placeHolderView];
@@ -179,8 +201,30 @@
}
- (void)onRoomUpdate {
self.moreButton.hidden = self.delegate.getRoomInfo.uid == [AccountInfoStorage instance].getUid.integerValue ? NO : YES;
RoomInfoModel * roomInfo = self.delegate.getRoomInfo;
self.moreButton.hidden = roomInfo.uid == [AccountInfoStorage instance].getUid.integerValue ? NO : YES;
self.arrangeMicButton.hidden = roomInfo.roomModeType != RoomModeType_Open_Micro_Mode;
}
- (void)handleNIMCustomMessage:(AttachmentModel *)attachment {
if (attachment.first == CustomMessageType_Arrange_Mic) {
if (attachment.second == Custom_Message_Sub_Arrange_Mic_Non_Empty || attachment.second == Custom_Message_Sub_Arrange_Mic_Empty) {
NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init];
request.roomId = [NSString stringWithFormat:@"%ld", self.delegate.getRoomInfo.roomId];
request.userIds = @[[AccountInfoStorage instance].getUid];
[[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray<NIMChatroomMember *> * _Nullable members) {
NIMChatroomMember * member;
if (error == nil) {
member = members.firstObject;
}
if (member.type == NIMChatroomMemberTypeCreator || member.type == NIMChatroomMemberTypeManager) {
self.arrangeMicButton.selected = attachment.second == Custom_Message_Sub_Arrange_Mic_Non_Empty;
};
}];
}
}
}
#pragma mark - Getters And Setters
- (UIButton *)inputButton {
if (!_inputButton) {
@@ -286,4 +330,16 @@
return _stackView;
}
- (UIButton *)arrangeMicButton {
if (!_arrangeMicButton) {
_arrangeMicButton = [UIButton buttonWithType:UIButtonTypeCustom];
[_arrangeMicButton setImage:[UIImage imageNamed:@"room_menu_arrange_mic"] forState:UIControlStateNormal];
[_arrangeMicButton setImage:[UIImage imageNamed:@"room_menu_arrange_mic_new"] forState:UIControlStateSelected];
_arrangeMicButton.tag = XPRoomMenuItemType_ArrangeMic;
[_arrangeMicButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside];
_arrangeMicButton.hidden = YES;
}
return _arrangeMicButton;
}
@end