2021-11-18 21:29:19 +08:00
|
|
|
//
|
|
|
|
// XPRoomGiftBroadcastView.m
|
|
|
|
// xplan-ios
|
|
|
|
//
|
|
|
|
// Created by 冯硕 on 2021/11/18.
|
|
|
|
//
|
|
|
|
|
|
|
|
#import "XPRoomGiftBroadcastView.h"
|
|
|
|
///Third
|
|
|
|
#import <Masonry/Masonry.h>
|
|
|
|
///Tool
|
|
|
|
#import "ThemeColor+Room.h"
|
|
|
|
#import "XPMacro.h"
|
|
|
|
///Model
|
|
|
|
#import "XPRoomGiftBroadCastModel.h"
|
|
|
|
///View
|
|
|
|
#import "NetImageView.h"
|
|
|
|
|
|
|
|
#define kScreenScale (CGFloat)KScreenWidth / (CGFloat)375
|
|
|
|
|
|
|
|
@interface XPRoomGiftUserView : UIView
|
|
|
|
|
|
|
|
///
|
|
|
|
@property (nonatomic,strong) NetImageView *avatarImageView;
|
|
|
|
///
|
|
|
|
@property (nonatomic,strong) UIImageView *boraderImageView;
|
|
|
|
///
|
|
|
|
@property (nonatomic,strong) UIButton *nickButton;
|
|
|
|
|
|
|
|
@end
|
|
|
|
|
|
|
|
@implementation XPRoomGiftUserView
|
|
|
|
|
|
|
|
- (instancetype)initWithFrame:(CGRect)frame {
|
|
|
|
if (self = [super initWithFrame:frame]) {
|
|
|
|
[self initSubViews];
|
|
|
|
[self initSubViewConstraints];
|
|
|
|
}
|
|
|
|
return self;
|
|
|
|
}
|
|
|
|
|
|
|
|
#pragma mark - Private Method
|
|
|
|
- (void)initSubViews {
|
|
|
|
[self addSubview:self.avatarImageView];
|
|
|
|
[self addSubview:self.boraderImageView];
|
|
|
|
[self addSubview:self.nickButton];
|
|
|
|
}
|
|
|
|
|
|
|
|
- (void)initSubViewConstraints {
|
|
|
|
[self mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
|
|
make.bottom.mas_equalTo(self.nickButton.mas_bottom);
|
|
|
|
}];
|
|
|
|
|
|
|
|
|
|
|
|
[self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
|
|
make.centerX.top.mas_equalTo(self);
|
|
|
|
make.height.width.mas_equalTo(44 * kScreenScale);
|
|
|
|
}];
|
|
|
|
|
|
|
|
[self.boraderImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
|
|
make.size.mas_equalTo(CGSizeMake(51 * kScreenScale, 51 * kScreenScale));
|
|
|
|
make.center.mas_equalTo(self.avatarImageView);
|
|
|
|
}];
|
|
|
|
|
|
|
|
[self.nickButton mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
|
|
make.centerX.mas_equalTo(self);
|
|
|
|
make.top.mas_equalTo(self.avatarImageView.mas_bottom).offset(-8 * kScreenScale);
|
|
|
|
make.size.mas_equalTo(CGSizeMake(66 * kScreenScale, 16 * kScreenScale));
|
|
|
|
}];
|
|
|
|
}
|
|
|
|
|
|
|
|
#pragma mark - Getters And Setters
|
|
|
|
- (NetImageView *)avatarImageView {
|
|
|
|
if (!_avatarImageView) {
|
2021-11-25 17:35:31 +08:00
|
|
|
NetImageConfig * config = [[NetImageConfig alloc]init];
|
|
|
|
config.imageType = ImageTypeUserIcon;
|
|
|
|
_avatarImageView = [[NetImageView alloc] initWithConfig:config];
|
2021-11-18 21:29:19 +08:00
|
|
|
_avatarImageView.userInteractionEnabled = YES;
|
|
|
|
_avatarImageView.layer.masksToBounds = YES;
|
2021-11-22 16:00:54 +08:00
|
|
|
_avatarImageView.layer.cornerRadius = 44 * kScreenScale/2;
|
2021-11-18 21:29:19 +08:00
|
|
|
}
|
|
|
|
return _avatarImageView;
|
|
|
|
}
|
|
|
|
|
|
|
|
- (UIImageView *)boraderImageView {
|
|
|
|
if (!_boraderImageView) {
|
|
|
|
_boraderImageView = [[UIImageView alloc] init];
|
|
|
|
_boraderImageView.userInteractionEnabled = YES;
|
|
|
|
}
|
|
|
|
return _boraderImageView;
|
|
|
|
}
|
|
|
|
|
|
|
|
- (UIButton *)nickButton {
|
|
|
|
if (!_nickButton) {
|
|
|
|
_nickButton = [UIButton buttonWithType:UIButtonTypeCustom];
|
|
|
|
[_nickButton setTitleColor:[ThemeColor giftBroadcastNickColor] forState:UIControlStateNormal];
|
|
|
|
_nickButton.titleLabel.font = [UIFont systemFontOfSize:10];
|
|
|
|
[_nickButton setBackgroundImage:[UIImage imageNamed:@"room_gift_broadcast_avatar_board"] forState:UIControlStateNormal];
|
|
|
|
}
|
|
|
|
return _nickButton;
|
|
|
|
}
|
|
|
|
|
|
|
|
@end
|
|
|
|
|
|
|
|
|
|
|
|
@interface XPRoomGiftBroadcastView ()
|
|
|
|
///背景
|
|
|
|
@property (nonatomic,strong) UIImageView *backImageView;
|
|
|
|
///赠送者
|
|
|
|
@property (nonatomic,strong) XPRoomGiftUserView *sendView;
|
|
|
|
///赠送
|
|
|
|
@property (nonatomic,strong) UIImageView *sendImageView;
|
|
|
|
///接收者
|
|
|
|
@property (nonatomic,strong) XPRoomGiftUserView *receiveView;
|
|
|
|
///礼物
|
|
|
|
@property (nonatomic,strong) NetImageView *giftImageView;
|
|
|
|
///数量
|
|
|
|
@property (nonatomic,strong) UILabel *countLabel;
|
|
|
|
///关闭
|
|
|
|
@property (nonatomic,strong) UIButton *closeButton;
|
2022-06-21 16:19:46 +08:00
|
|
|
///房间iD
|
|
|
|
@property (nonatomic,strong) UILabel *roomIdLabel;
|
2021-11-18 21:29:19 +08:00
|
|
|
@end
|
|
|
|
|
|
|
|
@implementation XPRoomGiftBroadcastView
|
|
|
|
|
|
|
|
- (instancetype)initWithFrame:(CGRect)frame
|
|
|
|
{
|
|
|
|
self = [super initWithFrame:frame];
|
|
|
|
if (self) {
|
|
|
|
[self initSubViews];
|
|
|
|
[self initSubViewConstraints];
|
2021-11-19 12:06:39 +08:00
|
|
|
[self initEvents];
|
2021-11-18 21:29:19 +08:00
|
|
|
}
|
|
|
|
return self;
|
|
|
|
}
|
|
|
|
#pragma mark - Response
|
|
|
|
- (void)closeButtonAction:(UIButton *)sender {
|
2021-11-19 12:06:39 +08:00
|
|
|
if (self.delegate && [self.delegate respondsToSelector:@selector(xPRoomGiftBroadcastView:didClickClose:)]) {
|
|
|
|
[self.delegate xPRoomGiftBroadcastView:self didClickClose:self.broadcastModel];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
- (void)didClickEnterRoom {
|
|
|
|
if (self.delegate && [self.delegate respondsToSelector:@selector(xPRoomGiftBroadcastView:enterRoom:)]) {
|
|
|
|
[self.delegate xPRoomGiftBroadcastView:self enterRoom:[NSString stringWithFormat:@"%ld", self.broadcastModel.roomUid]];
|
|
|
|
}
|
2021-11-18 21:29:19 +08:00
|
|
|
}
|
2021-11-19 12:06:39 +08:00
|
|
|
|
2021-11-18 21:29:19 +08:00
|
|
|
#pragma mark - Private Method
|
|
|
|
- (void)initSubViews {
|
|
|
|
[self addSubview:self.backImageView];
|
|
|
|
|
|
|
|
[self.backImageView addSubview:self.closeButton];
|
|
|
|
[self.backImageView addSubview:self.sendView];
|
|
|
|
[self.backImageView addSubview:self.sendImageView];
|
|
|
|
[self.backImageView addSubview:self.receiveView];
|
|
|
|
[self.backImageView addSubview:self.giftImageView];
|
|
|
|
[self.backImageView addSubview:self.countLabel];
|
2022-06-21 16:19:46 +08:00
|
|
|
[self.backImageView addSubview:self.roomIdLabel];
|
2021-11-18 21:29:19 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
- (void)initSubViewConstraints {
|
|
|
|
CGFloat kscale = (CGFloat)125/ (CGFloat)345;
|
|
|
|
CGFloat width = KScreenWidth - 30;
|
|
|
|
|
|
|
|
[self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
|
|
make.left.right.mas_equalTo(self).inset(15);
|
|
|
|
make.top.mas_equalTo(self);
|
|
|
|
make.height.mas_equalTo(width * kscale);
|
|
|
|
}];
|
|
|
|
|
|
|
|
[self.sendView mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
|
|
make.top.mas_equalTo(self.backImageView).offset(41 * kScreenScale);
|
|
|
|
make.width.mas_equalTo(66 * kScreenScale);
|
|
|
|
make.left.mas_equalTo(self.backImageView).offset(13 * kScreenScale);
|
|
|
|
}];
|
|
|
|
|
|
|
|
[self.sendImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
|
|
make.size.mas_equalTo(CGSizeMake(30 * kScreenScale, 15 * kScreenScale));
|
|
|
|
make.centerY.mas_equalTo(self.sendView);
|
|
|
|
make.left.mas_equalTo(self.sendView.mas_right).offset(13 * kScreenScale);
|
|
|
|
}];
|
|
|
|
|
|
|
|
[self.receiveView mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
|
|
make.centerY.width.mas_equalTo(self.sendView);
|
|
|
|
make.left.mas_equalTo(self.sendImageView.mas_right).offset(13 * kScreenScale);
|
|
|
|
}];
|
|
|
|
|
|
|
|
[self.giftImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
|
|
make.size.mas_equalTo(CGSizeMake(60 * kScreenScale, 60 * kScreenScale));
|
|
|
|
make.centerY.mas_equalTo(self.sendView);
|
|
|
|
make.left.mas_equalTo(self.receiveView.mas_right).offset(13 * kScreenScale);
|
|
|
|
}];
|
|
|
|
|
|
|
|
[self.countLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
2021-11-19 12:06:39 +08:00
|
|
|
make.left.mas_equalTo(self.giftImageView.mas_right).offset(13 * kScreenScale);
|
2021-11-18 21:29:19 +08:00
|
|
|
make.centerY.mas_equalTo(self.sendView);
|
|
|
|
}];
|
|
|
|
|
|
|
|
[self.closeButton mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
|
|
make.right.mas_equalTo(self.backImageView).offset(-3);
|
|
|
|
make.top.mas_equalTo(13);
|
|
|
|
make.size.mas_equalTo(CGSizeMake(28, 22));
|
|
|
|
}];
|
2022-06-21 16:19:46 +08:00
|
|
|
|
|
|
|
[self.roomIdLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
|
|
make.centerX.mas_equalTo(self.backImageView);
|
|
|
|
make.top.mas_equalTo(self.backImageView).offset(10);
|
|
|
|
}];
|
2021-11-18 21:29:19 +08:00
|
|
|
}
|
|
|
|
|
2021-11-19 12:06:39 +08:00
|
|
|
- (void)initEvents {
|
|
|
|
UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didClickEnterRoom)];
|
|
|
|
[self.backImageView addGestureRecognizer:tap];
|
|
|
|
}
|
|
|
|
|
2021-11-18 21:29:19 +08:00
|
|
|
- (void)updateSubviews:(BroadCastLevel)level {
|
|
|
|
NSString * nickBackImageName;
|
|
|
|
UIColor * nickColor;
|
|
|
|
NSString * bgImageName;
|
|
|
|
switch (level) {
|
|
|
|
case BroadCastLevel_Normal:
|
|
|
|
{
|
|
|
|
CGFloat kscale = (CGFloat)124/ (CGFloat)345;
|
|
|
|
CGFloat width = KScreenWidth - 30;
|
|
|
|
[self.backImageView mas_updateConstraints:^(MASConstraintMaker *make) {
|
|
|
|
make.height.mas_equalTo(width * kscale);
|
|
|
|
}];
|
|
|
|
|
|
|
|
[self.closeButton mas_updateConstraints:^(MASConstraintMaker *make) {
|
|
|
|
make.top.mas_equalTo(14 * kScreenScale);
|
|
|
|
}];
|
|
|
|
nickBackImageName = @"room_gift_broadcast_normal_nick_bg";
|
|
|
|
nickColor = [ThemeColor mainTextColor];
|
|
|
|
bgImageName = @"room_gift_broadcast_low_bg";
|
2022-06-21 16:19:46 +08:00
|
|
|
self.roomIdLabel.hidden = YES;
|
2021-11-18 21:29:19 +08:00
|
|
|
}
|
|
|
|
break;
|
|
|
|
case BroadCastLevel_Middle:
|
|
|
|
{
|
|
|
|
CGFloat kscale = (CGFloat)120/ (CGFloat)345;
|
|
|
|
CGFloat width = KScreenWidth - 30;
|
|
|
|
[self.backImageView mas_updateConstraints:^(MASConstraintMaker *make) {
|
|
|
|
make.height.mas_equalTo(width * kscale);
|
|
|
|
}];;
|
|
|
|
|
|
|
|
[self.closeButton mas_updateConstraints:^(MASConstraintMaker *make) {
|
|
|
|
make.top.mas_equalTo(11 * kScreenScale);
|
|
|
|
}];
|
|
|
|
|
|
|
|
nickBackImageName = @"room_gift_broadcast_higher_nick_bg";
|
|
|
|
nickColor = [ThemeColor giftBroadcastNickColor];
|
|
|
|
bgImageName = @"room_gift_broadcast_middle_bg";
|
2022-06-21 16:19:46 +08:00
|
|
|
self.roomIdLabel.hidden = YES;
|
2021-11-18 21:29:19 +08:00
|
|
|
}
|
|
|
|
break;
|
|
|
|
case BroadCastLevel_High:
|
|
|
|
{
|
|
|
|
CGFloat kscale = (CGFloat)143/ (CGFloat)345;
|
|
|
|
CGFloat width = KScreenWidth - 30;
|
|
|
|
[self.backImageView mas_updateConstraints:^(MASConstraintMaker *make) {
|
|
|
|
make.height.mas_equalTo(width * kscale);
|
|
|
|
}];
|
|
|
|
|
|
|
|
[self.closeButton mas_updateConstraints:^(MASConstraintMaker *make) {
|
|
|
|
make.top.mas_equalTo(33 * kScreenScale);
|
|
|
|
}];
|
|
|
|
|
|
|
|
nickBackImageName = @"room_gift_broadcast_higher_nick_bg";
|
|
|
|
nickColor = [ThemeColor giftBroadcastNickColor];
|
|
|
|
bgImageName = @"room_gift_broadcast_high_bg";
|
2022-06-21 16:19:46 +08:00
|
|
|
self.roomIdLabel.hidden = NO;
|
2021-11-18 21:29:19 +08:00
|
|
|
}
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (nickBackImageName.length > 0) {
|
|
|
|
[self.sendView.nickButton setBackgroundImage:[UIImage imageNamed:nickBackImageName] forState:UIControlStateNormal];
|
|
|
|
[self.receiveView.nickButton setBackgroundImage:[UIImage imageNamed:nickBackImageName] forState:UIControlStateNormal];
|
|
|
|
}
|
|
|
|
|
|
|
|
if (nickColor) {
|
|
|
|
[self.sendView.nickButton setTitleColor:nickColor forState:UIControlStateNormal];
|
|
|
|
[self.receiveView.nickButton setTitleColor:nickColor forState:UIControlStateNormal];
|
|
|
|
}
|
|
|
|
|
|
|
|
self.backImageView.image = [UIImage imageNamed:bgImageName];
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#pragma mark - Getters And Setters
|
|
|
|
- (void)setBroadcastModel:(XPRoomGiftBroadCastModel *)broadcastModel {
|
|
|
|
_broadcastModel = broadcastModel;
|
|
|
|
if (_broadcastModel) {
|
|
|
|
if (broadcastModel.sendUserNick.length > 6) {
|
|
|
|
broadcastModel.sendUserNick = [broadcastModel.sendUserNick substringToIndex:6];
|
|
|
|
}
|
|
|
|
self.sendView.avatarImageView.imageUrl = broadcastModel.sendUserAvatar;
|
|
|
|
[self.sendView.nickButton setTitle:broadcastModel.sendUserNick forState:UIControlStateNormal];
|
|
|
|
|
|
|
|
if (broadcastModel.recvUserNick.length > 6) {
|
|
|
|
broadcastModel.recvUserNick = [broadcastModel.recvUserNick substringToIndex:6];
|
|
|
|
}
|
|
|
|
self.receiveView.avatarImageView.imageUrl = broadcastModel.recvUserAvatar;
|
|
|
|
[self.receiveView.nickButton setTitle:broadcastModel.recvUserNick forState:UIControlStateNormal];
|
|
|
|
|
|
|
|
self.giftImageView.imageUrl = broadcastModel.giftUrl;
|
|
|
|
self.countLabel.text = [NSString stringWithFormat:@"x%ld", broadcastModel.giftNum];
|
2022-06-21 16:19:46 +08:00
|
|
|
self.roomIdLabel.text = [NSString stringWithFormat:@"ID:%@", broadcastModel.roomErbanNo];
|
2021-11-18 21:29:19 +08:00
|
|
|
[self updateSubviews:broadcastModel.levelNum];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
- (UIImageView *)backImageView {
|
|
|
|
if (!_backImageView) {
|
|
|
|
_backImageView = [[UIImageView alloc] init];
|
|
|
|
_backImageView.userInteractionEnabled = YES;
|
|
|
|
}
|
|
|
|
return _backImageView;
|
|
|
|
}
|
|
|
|
|
|
|
|
- (XPRoomGiftUserView *)sendView {
|
|
|
|
if (!_sendView) {
|
|
|
|
_sendView = [[XPRoomGiftUserView alloc] init];
|
|
|
|
}
|
|
|
|
return _sendView;
|
|
|
|
}
|
|
|
|
|
|
|
|
- (UIImageView *)sendImageView {
|
|
|
|
if (!_sendImageView) {
|
|
|
|
_sendImageView = [[UIImageView alloc] init];
|
|
|
|
_sendImageView.userInteractionEnabled = YES;
|
|
|
|
_sendImageView.image = [UIImage imageNamed:@"room_gift_broadcast_send"];
|
|
|
|
}
|
|
|
|
return _sendImageView;
|
|
|
|
}
|
|
|
|
|
|
|
|
- (XPRoomGiftUserView *)receiveView {
|
|
|
|
if (!_receiveView) {
|
|
|
|
_receiveView = [[XPRoomGiftUserView alloc] init];
|
|
|
|
}
|
|
|
|
return _receiveView;
|
|
|
|
}
|
|
|
|
- (NetImageView *)giftImageView {
|
|
|
|
if (!_giftImageView) {
|
2021-11-25 17:35:31 +08:00
|
|
|
NetImageConfig * config = [[NetImageConfig alloc]init];
|
|
|
|
config.imageType = ImageTypeUserIcon;
|
|
|
|
_giftImageView = [[NetImageView alloc] initWithConfig:config];
|
2021-11-18 21:29:19 +08:00
|
|
|
}
|
|
|
|
return _giftImageView;
|
|
|
|
}
|
|
|
|
|
|
|
|
- (UILabel *)countLabel {
|
|
|
|
if (!_countLabel) {
|
|
|
|
_countLabel = [[UILabel alloc] init];
|
|
|
|
_countLabel.font = [UIFont fontWithName:@"PingFang-SC-Heavy" size:20];
|
|
|
|
_countLabel.textColor = [ThemeColor giftBroadcastNumberColor];
|
|
|
|
}
|
|
|
|
return _countLabel;
|
|
|
|
}
|
|
|
|
|
|
|
|
- (UIButton *)closeButton {
|
|
|
|
if (!_closeButton) {
|
|
|
|
_closeButton = [UIButton buttonWithType:UIButtonTypeCustom];
|
|
|
|
[_closeButton setImage:[UIImage imageNamed:@"room_gift_broadcast_close"] forState:UIControlStateNormal];
|
|
|
|
[_closeButton setImage:[UIImage imageNamed:@"room_gift_broadcast_close"] forState:UIControlStateSelected];
|
|
|
|
[_closeButton addTarget:self action:@selector(closeButtonAction:) forControlEvents:UIControlEventTouchUpInside];
|
|
|
|
}
|
|
|
|
return _closeButton;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2022-06-21 16:19:46 +08:00
|
|
|
- (UILabel *)roomIdLabel {
|
|
|
|
if (!_roomIdLabel) {
|
|
|
|
_roomIdLabel = [[UILabel alloc] init];
|
|
|
|
_roomIdLabel.font = [UIFont systemFontOfSize:12];
|
|
|
|
_roomIdLabel.textColor = [ThemeColor giftBroadcastNickColor];
|
|
|
|
}
|
|
|
|
return _roomIdLabel;
|
|
|
|
}
|
|
|
|
|
2021-11-18 21:29:19 +08:00
|
|
|
|
|
|
|
@end
|