// // XPRoomBottomMenuView.m // xplan-ios // // Created by 冯硕 on 2021/10/11. // #import "XPRoomMenuContainerView.h" ///Third #import ///Model #import "XPRoomMenuItem.h" @interface XPRoomMenuContainerView () /// @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) UIView * placeHolderView; @end @implementation XPRoomMenuContainerView - (instancetype)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { [self initSubViews]; [self initSubViewConstraints]; } return self; } #pragma mark - Response - (void)menuButtonAction:(UIButton *)sender { if (self.delegate && [self.delegate respondsToSelector:@selector(xpRoomMenuContainerView:didClickItem:)]) { [self.delegate xpRoomMenuContainerView:self didClickItem:sender.tag]; } } #pragma mark - Private Method - (void)initSubViews { [self 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.messageButton]; [self.stackView addArrangedSubview:self.moreButton]; [self.stackView addArrangedSubview:self.placeHolderView]; [self.stackView addArrangedSubview:self.giftButton]; } - (void)initSubViewConstraints { [self.stackView mas_makeConstraints:^(MASConstraintMaker *make) { make.left.right.mas_equalTo(self).inset(15); make.top.bottom.mas_equalTo(self); }]; [self.inputButton mas_makeConstraints:^(MASConstraintMaker *make) { make.size.mas_equalTo(CGSizeMake(100, 30)); }]; [self.giftButton mas_makeConstraints:^(MASConstraintMaker *make) { make.size.mas_equalTo(CGSizeMake(38, 38)); }]; } #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 setBackgroundImage:[UIImage imageNamed:@"room_menu_input_bg"] forState:UIControlStateNormal]; _inputButton.tag = XPRoomMenuItemType_Input; [_inputButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside]; _inputButton.hidden = YES; } 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.tag = XPRoomMenuItemType_Mic; [_micButton addTarget:self action:@selector(menuButtonAction:) forControlEvents:UIControlEventTouchUpInside]; } 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]; _messageButton.hidden = YES; } 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]; _moreButton.hidden = YES; } return _moreButton; } - (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]; _giftButton.hidden = YES; } return _giftButton; } - (UIView *)placeHolderView { if (!_placeHolderView) { _placeHolderView = [[UIView alloc] init]; _placeHolderView.backgroundColor = [UIColor clearColor]; [_placeHolderView setContentHuggingPriority:UILayoutPriorityDragThatCanResizeScene forAxis:UILayoutConstraintAxisHorizontal]; } return _placeHolderView; } - (UIStackView *)stackView { if (!_stackView) { _stackView = [[UIStackView alloc] init]; _stackView.axis = UILayoutConstraintAxisHorizontal; _stackView.distribution = UIStackViewDistributionFill; _stackView.alignment = UIStackViewAlignmentCenter; _stackView.spacing = 8; } return _stackView; } @end