优化房间
@@ -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"
|
||||||
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 2.6 KiB |
@@ -10,6 +10,7 @@
|
|||||||
"scale" : "2x"
|
"scale" : "2x"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"filename" : "room_menu_face@3x.png",
|
||||||
"idiom" : "universal",
|
"idiom" : "universal",
|
||||||
"scale" : "3x"
|
"scale" : "3x"
|
||||||
}
|
}
|
||||||
|
Before Width: | Height: | Size: 721 B After Width: | Height: | Size: 1.4 KiB |
BIN
YuMi/Assets.xcassets/yna/Menu/room_menu_face.imageset/room_menu_face@3x.png
vendored
Normal file
After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 3.4 KiB |
Before Width: | Height: | Size: 5.2 KiB After Width: | Height: | Size: 5.0 KiB |
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 3.6 KiB |
Before Width: | Height: | Size: 5.4 KiB After Width: | Height: | Size: 5.4 KiB |
Before Width: | Height: | Size: 859 B After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.9 KiB |
@@ -10,6 +10,7 @@
|
|||||||
"scale" : "2x"
|
"scale" : "2x"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"filename" : "room_menu_more@3x.png",
|
||||||
"idiom" : "universal",
|
"idiom" : "universal",
|
||||||
"scale" : "3x"
|
"scale" : "3x"
|
||||||
}
|
}
|
||||||
|
Before Width: | Height: | Size: 849 B After Width: | Height: | Size: 1.3 KiB |
BIN
YuMi/Assets.xcassets/yna/Menu/room_menu_more.imageset/room_menu_more@3x.png
vendored
Normal file
After Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 7.7 KiB |
22
YuMi/Assets.xcassets/yna/Menu/room_menu_send_bg.imageset/Contents.json
vendored
Normal 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
|
||||||
|
}
|
||||||
|
}
|
BIN
YuMi/Assets.xcassets/yna/Menu/room_menu_send_bg.imageset/room_menu_send_bg@2x.png
vendored
Normal file
After Width: | Height: | Size: 715 B |
BIN
YuMi/Assets.xcassets/yna/Menu/room_menu_send_bg.imageset/room_menu_send_bg@3x.png
vendored
Normal file
After Width: | Height: | Size: 1.1 KiB |
22
YuMi/Assets.xcassets/yna/Menu/room_menu_voice_close.imageset/Contents.json
vendored
Normal 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
|
||||||
|
}
|
||||||
|
}
|
BIN
YuMi/Assets.xcassets/yna/Menu/room_menu_voice_close.imageset/room_menu_voice_close@2x.png
vendored
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
YuMi/Assets.xcassets/yna/Menu/room_menu_voice_close.imageset/room_menu_voice_close@3x.png
vendored
Normal file
After Width: | Height: | Size: 1.8 KiB |
22
YuMi/Assets.xcassets/yna/Menu/room_menu_voice_open.imageset/Contents.json
vendored
Normal 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
|
||||||
|
}
|
||||||
|
}
|
BIN
YuMi/Assets.xcassets/yna/Menu/room_menu_voice_open.imageset/room_menu_voice_open@2x.png
vendored
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
YuMi/Assets.xcassets/yna/Menu/room_menu_voice_open.imageset/room_menu_voice_open@3x.png
vendored
Normal file
After Width: | Height: | Size: 1.7 KiB |
@@ -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
|
||||||
|
@@ -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
|
||||||
|
@@ -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;
|
||||||
///发小消息的弹框
|
///发小消息的弹框
|
||||||
|
@@ -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 {
|
||||||
|
@@ -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];
|
||||||
|
@@ -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);
|
||||||
|
@@ -1099,7 +1099,7 @@
|
|||||||
"XPMoreMenuPresenter22" = "邀请粉丝";
|
"XPMoreMenuPresenter22" = "邀请粉丝";
|
||||||
"XPMoreMenuPresenter23" = "发佈广播";
|
"XPMoreMenuPresenter23" = "发佈广播";
|
||||||
"XPMoreMenuPresenter24" = "红包";
|
"XPMoreMenuPresenter24" = "红包";
|
||||||
"XPMoreMenuPresenter25" = "扬声器";
|
|
||||||
"XPMoreMenuPresenter26" = "PK中...";
|
"XPMoreMenuPresenter26" = "PK中...";
|
||||||
"XPMoreMenuPresenter27" = "关闭礼物值";
|
"XPMoreMenuPresenter27" = "关闭礼物值";
|
||||||
"XPMoreMenuPresenter28" = "关闭我的特效";
|
"XPMoreMenuPresenter28" = "关闭我的特效";
|
||||||
|
@@ -1099,7 +1099,7 @@
|
|||||||
"XPMoreMenuPresenter22" = "邀請粉絲";
|
"XPMoreMenuPresenter22" = "邀請粉絲";
|
||||||
"XPMoreMenuPresenter23" = "發佈廣播";
|
"XPMoreMenuPresenter23" = "發佈廣播";
|
||||||
"XPMoreMenuPresenter24" = "紅包";
|
"XPMoreMenuPresenter24" = "紅包";
|
||||||
"XPMoreMenuPresenter25" = "揚聲器";
|
|
||||||
"XPMoreMenuPresenter26" = "PK中...";
|
"XPMoreMenuPresenter26" = "PK中...";
|
||||||
"XPMoreMenuPresenter27" = "關閉禮物值";
|
"XPMoreMenuPresenter27" = "關閉禮物值";
|
||||||
"XPMoreMenuPresenter28" = "關閉我的特效";
|
"XPMoreMenuPresenter28" = "關閉我的特效";
|
||||||
|