Files
yinmeng-ios/xplan-ios/Main/Room/View/BaseUIContainerView/XPRoomGiftBroadcastView.m
2021-11-19 14:13:08 +08:00

366 lines
11 KiB
Objective-C

//
// 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) {
_avatarImageView = [[NetImageView alloc] init];
_avatarImageView.userInteractionEnabled = YES;
_avatarImageView.imageType = ImageTypeUserIcon;
_avatarImageView.layer.masksToBounds = YES;
_avatarImageView.layer.cornerRadius = 50 * kScreenScale/2;
}
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;
@end
@implementation XPRoomGiftBroadcastView
- (instancetype)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
[self initSubViews];
[self initSubViewConstraints];
[self initEvents];
}
return self;
}
#pragma mark - Response
- (void)closeButtonAction:(UIButton *)sender {
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]];
}
}
#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];
}
- (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) {
make.left.mas_equalTo(self.giftImageView.mas_right).offset(13 * kScreenScale);
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));
}];
}
- (void)initEvents {
UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didClickEnterRoom)];
[self.backImageView addGestureRecognizer:tap];
}
- (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";
}
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";
}
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";
}
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];
[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) {
_giftImageView = [[NetImageView alloc] init];
_giftImageView.imageType = ImageTypeUserIcon;
}
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;
}
@end