491 lines
20 KiB
Objective-C
491 lines
20 KiB
Objective-C
//
|
|
// XPRoomBottomMenuView.m
|
|
// xplan-ios
|
|
//
|
|
// Created by 冯硕 on 2021/10/11.
|
|
//
|
|
|
|
#import "XPRoomMenuContainerView.h"
|
|
///Third
|
|
#import <Masonry/Masonry.h>
|
|
///Tool
|
|
#import "AccountInfoStorage.h"
|
|
#import "TTPopup.h"
|
|
#import "RtcManager.h"
|
|
#import "XCHudTool.h"
|
|
#import "StatisticsServiceHelper.h"
|
|
#import "Themecolor.h"
|
|
///Model
|
|
#import "XPRoomMenuItem.h"
|
|
#import "MicroQueueModel.h"
|
|
#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 "XPNobleCenterViewController.h"
|
|
#import "XPRoomFaceViewController.h"
|
|
|
|
@interface XPRoomMenuContainerView ()
|
|
///滚动的容器
|
|
@property (nonatomic,strong) UIScrollView *scrollView;
|
|
///
|
|
@property (nonatomic,strong) UIStackView *stackView;
|
|
///输入框
|
|
@property (nonatomic,strong) UIButton *inputButton;
|
|
///麦
|
|
@property (nonatomic,strong) UIButton *micButton;
|
|
///声音
|
|
@property (nonatomic,strong) UIButton *voiceButton;
|
|
///表情
|
|
@property (nonatomic,strong) UIButton *faceButton;
|
|
///私聊
|
|
@property (nonatomic,strong) UIButton *messageButton;
|
|
///更多
|
|
@property (nonatomic,strong) UIButton *moreButton;
|
|
///礼物
|
|
@property (nonatomic,strong) UIButton *giftButton;
|
|
///排麦
|
|
@property (nonatomic,strong) UIButton *arrangeMicButton;
|
|
///贵族
|
|
@property (nonatomic,strong) UIButton *nobleButton;
|
|
///代理
|
|
@property (nonatomic,weak) id<RoomHostDelegate> delegate;
|
|
@end
|
|
|
|
|
|
@implementation XPRoomMenuContainerView
|
|
|
|
- (instancetype)initWithDelegate:(id<RoomHostDelegate>)delegate {
|
|
self = [super init];
|
|
if (self) {
|
|
self.delegate = delegate;
|
|
[self initSubViews];
|
|
[self initSubViewConstraints];
|
|
}
|
|
return self;
|
|
}
|
|
#pragma mark - Response
|
|
- (void)menuButtonAction:(UIButton *)sender {
|
|
XPRoomMenuItemType type = sender.tag;
|
|
switch (type) {
|
|
case XPRoomMenuItemType_Input:
|
|
{
|
|
if (self.delegate.getRoomInfo.isCloseScreen) {
|
|
[XCHUDTool showErrorWithMessage:@"房间公屏已关闭"];
|
|
return;
|
|
}
|
|
[XPRoomSendTextView showTextView:self.superview delegate:self.delegate atUid:nil atNick:nil];
|
|
}
|
|
break;
|
|
|
|
case XPRoomMenuItemType_Mic: {
|
|
[RtcManager instance].localMuted = !self.micButton.isSelected;
|
|
self.micButton.selected = [RtcManager instance].isLocalMuted;
|
|
}
|
|
break;
|
|
|
|
case XPRoomMenuItemType_Voice: {
|
|
[RtcManager instance].remoteMuted = !self.voiceButton.isSelected;
|
|
self.voiceButton.selected = [RtcManager instance].isRemoteMuted;
|
|
}
|
|
break;
|
|
|
|
case XPRoomMenuItemType_Face: {
|
|
XPRoomFaceViewController * faceVC = [[XPRoomFaceViewController alloc] init];
|
|
faceVC.modalPresentationStyle = UIModalPresentationOverFullScreen;
|
|
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;
|
|
NSArray * giftUses = [self configGiftUsers:[self.delegate getMicroQueue]];
|
|
[giftView configGiftUsers:giftUses];
|
|
[self.delegate.getCurrentNav presentViewController:giftView animated:YES completion:nil];
|
|
}
|
|
break;
|
|
case XPRoomMenuItemType_Message: {
|
|
SessionListViewController * sessionList = [[SessionListViewController alloc] initWithType:SessionListOpenTypeRoom];
|
|
[self.delegate.getCurrentNav pushViewController:sessionList animated:YES];
|
|
}
|
|
break;
|
|
case XPRoomMenuItemType_More: {
|
|
XPRoomMoreMenuViewController * moreMenuVC = [[XPRoomMoreMenuViewController alloc] initWithDelegate:self.delegate];
|
|
[self.delegate.getCurrentNav presentViewController:moreMenuVC animated:YES completion:nil];
|
|
}
|
|
break;
|
|
case XPRoomMenuItemType_ArrangeMic:{
|
|
if (self.delegate.getRoomInfo.roomModeType == RoomModeType_Open_PK_Mode && self.delegate.isRoomPKPlaying) {
|
|
[XCHUDTool showErrorWithMessage:@"PK已开始暂时无法排麦"];
|
|
return;
|
|
}
|
|
|
|
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;
|
|
}
|
|
RoomInfoModel * roomInfo = self.delegate.getRoomInfo;
|
|
XPArrangeMicInfoModel * info = [[XPArrangeMicInfoModel alloc] init];
|
|
info.roomUid = [NSString stringWithFormat:@"%ld", roomInfo.uid];
|
|
info.roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId];
|
|
info.nick = roomInfo.nick;
|
|
info.roomAvatar = roomInfo.avatar;
|
|
info.roomTitle = roomInfo.title;
|
|
info.micQueue = [self.delegate getMicroQueue];
|
|
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;
|
|
XPArrangeMicViewController * arrangeMicVC = [[XPArrangeMicViewController alloc] initWithInfo:info];
|
|
[self.delegate.getCurrentNav presentViewController:arrangeMicVC animated:YES completion:nil];
|
|
}];
|
|
}
|
|
break;
|
|
case XPRoomMenuItemType_Noble: {
|
|
[StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventvipEntranceRoomClick];
|
|
XPNobleCenterViewController * nobleVC = [[XPNobleCenterViewController alloc] initWithRoomUid:self.delegate.getRoomInfo.uid];
|
|
[self.delegate.getCurrentNav pushViewController:nobleVC animated:YES];
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
#pragma mark - Private Method
|
|
- (void)initSubViews {
|
|
[self addSubview:self.scrollView];
|
|
[self addSubview:self.giftButton];
|
|
|
|
[self.scrollView addSubview:self.stackView];
|
|
|
|
[self.stackView addArrangedSubview:self.inputButton];
|
|
[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.nobleButton];
|
|
}
|
|
|
|
- (void)initSubViewConstraints {
|
|
[self.scrollView mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
make.left.mas_equalTo(self).offset(15);
|
|
make.right.mas_equalTo(self.giftButton.mas_left).offset(-10);
|
|
make.top.bottom.mas_equalTo(self);
|
|
}];
|
|
|
|
[self.stackView mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
make.top.bottom.leading.trailing.height.mas_equalTo(self.scrollView);
|
|
}];
|
|
|
|
[self.inputButton mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
make.size.mas_equalTo(CGSizeMake(100, 30));
|
|
}];
|
|
|
|
[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 {
|
|
NSMutableArray * array = [NSMutableArray array];
|
|
for (MicroQueueModel * microModel in queue.allValues) {
|
|
if (microModel.userInfo && microModel.userInfo.uid >0) {
|
|
UserInfoModel * userInfo = microModel.userInfo;
|
|
XPGiftUserInfoModel * userModel = [[XPGiftUserInfoModel alloc] init];
|
|
userModel.avatar = userInfo.avatar;
|
|
userModel.vipMic = userInfo.vipMic;
|
|
userModel.position = [NSString stringWithFormat:@"%d", microModel.microState.position];
|
|
userModel.uid = userInfo.uid;
|
|
if (self.delegate.getRoomInfo.type == RoomType_Anchor && microModel.microState.position == -1) {///个播房一直为离开模式,不需要添加房主位
|
|
continue;
|
|
}
|
|
[array addObject:userModel];
|
|
}
|
|
}
|
|
|
|
if (self.delegate.getRoomInfo.leaveMode) {
|
|
RoomInfoModel * roomInfo= self.delegate.getRoomInfo;
|
|
XPGiftUserInfoModel * userModel = [[XPGiftUserInfoModel alloc] init];
|
|
userModel.avatar = roomInfo.avatar;
|
|
userModel.position = @"-1";
|
|
userModel.uid = roomInfo.uid;
|
|
[array addObject:userModel];
|
|
} else if (self.delegate.getRoomInfo.type == RoomType_Anchor) {
|
|
RoomInfoModel * roomInfo= self.delegate.getRoomInfo;
|
|
BOOL hadContainerOwner = NO;
|
|
for (UserInfoModel *userModel in array) {
|
|
if (userModel.uid == roomInfo.uid) {
|
|
hadContainerOwner = YES;
|
|
break;
|
|
}
|
|
}
|
|
if (!hadContainerOwner) {
|
|
XPGiftUserInfoModel * userModel = [[XPGiftUserInfoModel alloc] init];
|
|
userModel.avatar = roomInfo.avatar;
|
|
userModel.position = @"-1";
|
|
userModel.uid = roomInfo.uid;
|
|
[array addObject:userModel];
|
|
}
|
|
}
|
|
return array;
|
|
}
|
|
|
|
- (MicroQueueModel *)findMySelfMicro:(NSMutableDictionary<NSString *,MicroQueueModel *> *)queue {
|
|
NSString * uid = [AccountInfoStorage instance].getUid;
|
|
for (MicroQueueModel * microModel in queue.allValues) {
|
|
if (microModel.userInfo && microModel.userInfo.uid == uid.integerValue) {
|
|
return microModel;
|
|
}
|
|
}
|
|
return nil;
|
|
}
|
|
|
|
#pragma mark - RoomGuestDelegate
|
|
- (void)onMicroQueueUpdate:(NSMutableDictionary<NSString *,MicroQueueModel *> *)queue {
|
|
MicroQueueModel * model = [self findMySelfMicro:queue];
|
|
if (model) {
|
|
self.micButton.hidden = NO;
|
|
self.micButton.selected = model.microState.micState == MicroMicStateType_Close ? YES : [RtcManager instance].isLocalMuted;
|
|
self.micButton.enabled = model.microState.micState == MicroMicStateType_Open;
|
|
self.faceButton.hidden = NO;
|
|
} else {
|
|
self.micButton.hidden = YES;
|
|
self.faceButton.hidden = YES;
|
|
}
|
|
}
|
|
|
|
- (void)onRoomEntered {
|
|
[self onRoomUpdate];
|
|
}
|
|
|
|
- (void)onRoomUpdate {
|
|
RoomInfoModel * roomInfo = self.delegate.getRoomInfo;
|
|
UserInfoModel * userInfo = self.delegate.getUserInfo;
|
|
|
|
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:UIControlStateSelected];
|
|
} else {
|
|
[self.giftButton setImage:[UIImage imageNamed:@"room_menu_gift"] forState:UIControlStateNormal];
|
|
[self.giftButton setImage:[UIImage imageNamed:@"room_menu_gift"] forState:UIControlStateSelected];
|
|
}
|
|
|
|
self.arrangeMicButton.hidden = roomInfo.roomModeType != RoomModeType_Open_Micro_Mode;
|
|
if (roomInfo.roomModeType == RoomModeType_Open_Blind || roomInfo.roomModeType == RoomModeType_Open_PK_Mode || roomInfo.roomModeType == RoomModeType_Open_Micro_Mode) {
|
|
NIMChatroomMembersByIdsRequest *request = [[NIMChatroomMembersByIdsRequest alloc]init];
|
|
request.roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId];
|
|
request.userIds = @[[AccountInfoStorage instance].getUid];
|
|
[[NIMSDK sharedSDK].chatroomManager fetchChatroomMembersByIds:request completion:^(NSError * _Nullable error, NSArray<NIMChatroomMember *> * _Nullable members) {
|
|
if (error == nil) {
|
|
NIMChatroomMember * member = members.firstObject;
|
|
if (member.type == NIMChatroomMemberTypeCreator || member.type == NIMChatroomMemberTypeManager) {
|
|
self.arrangeMicButton.hidden = NO;
|
|
return;
|
|
}
|
|
}
|
|
self.arrangeMicButton.hidden = YES;
|
|
}];
|
|
}
|
|
}
|
|
|
|
- (void)handleNIMCustomMessage:(NIMMessage *)message {
|
|
NIMCustomObject *obj = (NIMCustomObject *)message.messageObject;
|
|
if (obj.attachment != nil && [obj.attachment isKindOfClass:[AttachmentModel class]]) {
|
|
AttachmentModel *attachment = (AttachmentModel *)obj.attachment;
|
|
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) {
|
|
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 || attachment.second == Custom_Message_Sub_Room_PK_Non_Empty);
|
|
};
|
|
}];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
- (void)handleNIMNotificationMessage:(NIMMessage *)message {
|
|
NIMNotificationObject *notiMsg = (NIMNotificationObject *)message.messageObject;
|
|
NIMChatroomNotificationContent *content = (NIMChatroomNotificationContent *)notiMsg.content;
|
|
switch (content.eventType) {
|
|
case NIMChatroomEventTypeAddManager:
|
|
{
|
|
if (self.delegate.getRoomInfo.roomModeType == RoomModeType_Open_Blind || self.delegate.getRoomInfo.roomModeType == RoomModeType_Open_PK_Mode) {
|
|
for (NIMChatroomNotificationMember * member in content.targets) {
|
|
if (member.userId.intValue == [AccountInfoStorage instance].getUid.integerValue) {
|
|
self.arrangeMicButton.hidden = NO;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
case NIMChatroomEventTypeRemoveManager:
|
|
{
|
|
if (self.delegate.getRoomInfo.roomModeType == RoomModeType_Open_Blind || self.delegate.getRoomInfo.roomModeType == RoomModeType_Open_PK_Mode) {
|
|
for (NIMChatroomNotificationMember * member in content.targets) {
|
|
if (member.userId.intValue == [AccountInfoStorage instance].getUid.integerValue) {
|
|
self.arrangeMicButton.hidden = YES;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
|
|
#pragma mark - Getters And Setters
|
|
- (UIButton *)inputButton {
|
|
if (!_inputButton) {
|
|
_inputButton = [UIButton buttonWithType:UIButtonTypeCustom];
|
|
[_inputButton setTitle:@"说点什么..." forState:UIControlStateNormal];
|
|
[_inputButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
|
|
_inputButton.titleLabel.font = [UIFont systemFontOfSize:15];
|
|
_inputButton.layer.masksToBounds = YES;
|
|
_inputButton.layer.cornerRadius = 15;
|
|
_inputButton.backgroundColor = UIColorRGBAlpha(0xFFFFFF, 0.3);
|
|
_inputButton.tag = XPRoomMenuItemType_Input;
|
|
[_inputButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside];
|
|
}
|
|
return _inputButton;
|
|
}
|
|
|
|
- (UIButton *)micButton {
|
|
if (!_micButton) {
|
|
_micButton = [UIButton buttonWithType:UIButtonTypeCustom];
|
|
[_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:UIControlStateDisabled | UIControlStateSelected];
|
|
_micButton.tag = XPRoomMenuItemType_Mic;
|
|
[_micButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside];
|
|
_micButton.hidden = YES;
|
|
}
|
|
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 {
|
|
if (!_faceButton) {
|
|
_faceButton = [UIButton buttonWithType:UIButtonTypeCustom];
|
|
[_faceButton setImage:[UIImage imageNamed:@"room_menu_face"] forState:UIControlStateNormal];
|
|
[_faceButton setImage:[UIImage imageNamed:@"room_menu_face"] forState:UIControlStateSelected];
|
|
_faceButton.tag = XPRoomMenuItemType_Face;
|
|
[_faceButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside];
|
|
_faceButton.hidden = YES;
|
|
}
|
|
return _faceButton;
|
|
}
|
|
|
|
- (UIButton *)messageButton {
|
|
if (!_messageButton) {
|
|
_messageButton = [UIButton buttonWithType:UIButtonTypeCustom];
|
|
[_messageButton setImage:[UIImage imageNamed:@"room_menu_message"] forState:UIControlStateNormal];
|
|
[_messageButton setImage:[UIImage imageNamed:@"room_menu_new_message"] forState:UIControlStateSelected];
|
|
_messageButton.tag = XPRoomMenuItemType_Message;
|
|
[_messageButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside];
|
|
}
|
|
return _messageButton;
|
|
}
|
|
|
|
- (UIButton *)moreButton {
|
|
if (!_moreButton) {
|
|
_moreButton = [UIButton buttonWithType:UIButtonTypeCustom];
|
|
[_moreButton setImage:[UIImage imageNamed:@"room_menu_more"] forState:UIControlStateNormal];
|
|
[_moreButton setImage:[UIImage imageNamed:@"room_menu_more"] forState:UIControlStateSelected];
|
|
_moreButton.tag = XPRoomMenuItemType_More;
|
|
[_moreButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside];
|
|
}
|
|
return _moreButton;
|
|
}
|
|
|
|
- (UIButton *)nobleButton {
|
|
if (!_nobleButton) {
|
|
_nobleButton = [UIButton buttonWithType:UIButtonTypeCustom];
|
|
[_nobleButton setImage:[UIImage imageNamed:@"room_menu_noble"] forState:UIControlStateNormal];
|
|
_nobleButton.tag = XPRoomMenuItemType_Noble;
|
|
[_nobleButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside];
|
|
}
|
|
return _nobleButton;
|
|
}
|
|
|
|
- (UIButton *)giftButton {
|
|
if (!_giftButton) {
|
|
_giftButton = [UIButton buttonWithType:UIButtonTypeCustom];
|
|
[_giftButton setImage:[UIImage imageNamed:@"room_menu_gift"] forState:UIControlStateNormal];
|
|
[_giftButton setImage:[UIImage imageNamed:@"room_menu_gift"] forState:UIControlStateSelected];
|
|
_giftButton.tag = XPRoomMenuItemType_Gift;
|
|
[_giftButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside];
|
|
}
|
|
return _giftButton;
|
|
}
|
|
|
|
- (UIStackView *)stackView {
|
|
if (!_stackView) {
|
|
_stackView = [[UIStackView alloc] init];
|
|
_stackView.axis = UILayoutConstraintAxisHorizontal;
|
|
_stackView.distribution = UIStackViewDistributionFill;
|
|
_stackView.alignment = UIStackViewAlignmentCenter;
|
|
_stackView.spacing = 8;
|
|
}
|
|
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;
|
|
}
|
|
|
|
- (UIScrollView *)scrollView {
|
|
if (!_scrollView) {
|
|
_scrollView = [[UIScrollView alloc] init];
|
|
_scrollView.backgroundColor = [UIColor clearColor];
|
|
_scrollView.showsHorizontalScrollIndicator = NO;
|
|
}
|
|
return _scrollView;
|
|
}
|
|
|
|
@end
|