Files
yinmeng-ios/xplan-ios/Main/Tabbar/View/NewUserRecharge/XPNewUserGreetRoomAlertView.m
2022-12-23 10:49:26 +08:00

356 lines
14 KiB
Objective-C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// XPHomeNewUserGreetView.m
// xplan-ios
//
// Created by 冯硕 on 2022/6/2.
//
#import "XPNewUserGreetRoomAlertView.h"
///Third
#import <Masonry/Masonry.h>
///Tool
#import "ThemeColor.h"
#import "NetImageView.h"
#import "XPMacro.h"
#import "TTPopup.h"
#import "UIImage+Utils.h"
#import <AFNetworking.h>
#import "XPSkillCardPlayerManager.h"
///Model
#import "NewUserGreetModel.h"
///View
#import "XPRoomViewController.h"
@interface XPNewUserGreetRoomAlertView ()
@property (nonatomic, strong) UIImageView *logoImageView;
@property (nonatomic, strong) UIView *avatarAlphaView;
///头像覆盖
@property (nonatomic,strong) UIImageView *avatarCoverView;
///头像
@property (nonatomic,strong) NetImageView *avatarImageView;
///渐变背景
@property (nonatomic, strong) UIImageView *effectView;
///昵称
@property (nonatomic,strong) UIButton *nickButton;
///性别
@property (nonatomic, strong) UIImageView *genderImageView;
///打招呼文案
@property (nonatomic,strong) UILabel *greetLabel;
///开始浪漫之旅
@property (nonatomic,strong) UIButton *startButton;
///声音秀背景
@property (nonatomic, strong) UIImageView *voiceShowBgImage;
///播放按钮
@property (nonatomic, strong) UIButton *playButton;
///声音秀波纹
@property (nonatomic, strong) UIImageView *voiceImage;
///播放中
@property (nonatomic,assign) BOOL isPlaying;
@end
@implementation XPNewUserGreetRoomAlertView
- (void)dealloc {
[[XPSkillCardPlayerManager shareInstance] stopMusic];
}
- (void)removeFromSuperview {
[super removeFromSuperview];
[[XPSkillCardPlayerManager shareInstance] stopMusic];
}
- (instancetype)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
[self initSubViews];
[self initSubViewConstraints];
}
return self;
}
#pragma mark - Private Method
- (void)initSubViews {
[self addSubview:self.logoImageView];
[self addSubview:self.avatarAlphaView];
[self addSubview:self.avatarCoverView];
[self addSubview:self.avatarImageView];
[self.avatarImageView addSubview:self.effectView];
[self.avatarImageView addSubview:self.nickButton];
[self.avatarImageView addSubview:self.genderImageView];
[self.avatarImageView addSubview:self.greetLabel];
[self addSubview:self.startButton];
[self addSubview:self.voiceShowBgImage];
[self.voiceShowBgImage addSubview:self.playButton];
[self.voiceShowBgImage addSubview:self.voiceImage];
}
- (void)initSubViewConstraints {
[self mas_makeConstraints:^(MASConstraintMaker *make) {
make.size.mas_equalTo(CGSizeMake(250, 74+6+290+28+44));
}];
[self.logoImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.mas_equalTo(0);
make.size.mas_equalTo(CGSizeMake(211, 74));
make.centerX.mas_equalTo(self);
}];
[self.avatarAlphaView mas_makeConstraints:^(MASConstraintMaker *make) {
make.size.mas_equalTo(CGSizeMake(250, 290));
make.centerX.mas_equalTo(self);
make.top.mas_equalTo(self.logoImageView.mas_bottom).offset(6);
}];
[self.avatarCoverView mas_makeConstraints:^(MASConstraintMaker *make) {
make.size.mas_equalTo(CGSizeMake(240, 280));
make.centerX.centerY.mas_equalTo(self.avatarAlphaView);
}];
[self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.size.mas_equalTo(CGSizeMake(230, 270));
make.centerX.centerY.mas_equalTo(self.avatarAlphaView);
}];
[self.effectView mas_makeConstraints:^(MASConstraintMaker *make) {
make.bottom.left.right.mas_equalTo(self.avatarImageView);
make.height.mas_equalTo(115);
}];
[self.nickButton mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(self.avatarImageView).mas_offset(6);
make.bottom.mas_equalTo(self.greetLabel.mas_top).mas_offset(-8);
}];
[self.genderImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.size.mas_equalTo(CGSizeMake(14, 14));
make.centerY.mas_equalTo(self.nickButton);
make.left.mas_equalTo(self.nickButton.mas_right).mas_offset(4);
}];
[self.greetLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.mas_equalTo(self.avatarImageView).inset(6);
make.bottom.mas_equalTo(self.avatarImageView).mas_offset(-8);
}];
[self.startButton mas_makeConstraints:^(MASConstraintMaker *make) {
make.size.mas_equalTo(CGSizeMake(200, 44));
make.centerX.mas_equalTo(self);
make.top.mas_equalTo(self.avatarAlphaView.mas_bottom).offset(28);
}];
[self.voiceShowBgImage mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.mas_equalTo(self.avatarAlphaView).mas_offset(-14);
make.top.mas_equalTo(self.avatarAlphaView).mas_offset(17);
make.size.mas_equalTo(CGSizeMake(44, 21));
}];
[self.playButton mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(self.voiceShowBgImage).mas_offset(3);
make.centerY.mas_equalTo(self.voiceShowBgImage);
make.size.mas_equalTo(CGSizeMake(14, 14));
}];
[self.voiceImage mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.mas_equalTo(self.voiceShowBgImage).mas_offset(-5);
make.centerY.mas_equalTo(self.voiceShowBgImage);
make.size.mas_equalTo(CGSizeMake(20, 10));
}];
}
#pragma mark - Event Response
- (void)startButtonAction:(UIButton *)sender {
[TTPopup dismiss];
if (self.greetInfo.roomUid.length > 0) {
[XPRoomViewController openRoom:self.greetInfo.roomUid fromNick:self.greetInfo.sayHelloUserNickname fromType:UserEnterRoomFromType_New_User_Greet fromUid:self.greetInfo.roomUid viewController:self.currentVC];
}
}
- (void)playButtonAction:(UIButton *)sender {
sender.selected = !sender.selected;
if (!self.isPlaying) {
// NSString *fileName = [[self.greetInfo.voiceCard.name componentsSeparatedByString:@"/"] lastObject];
// fileName = [NSString stringWithFormat:@"%zd_%@", self.cardInfo.uid, fileName];
// NSString * url = [self.greetInfo.voiceCard.propVals safeObjectAtIndex1:0];
// NSString *filePath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:@"mineSkillCardVoice"];
// NSString *fullPath = [filePath stringByAppendingPathComponent:fileName];
// if ([[NSFileManager defaultManager] fileExistsAtPath:fullPath]) {
// self.isPlaying = YES;
// sender.selected = YES;
//
// [[XPSkillCardPlayerManager shareInstance] playerVoiceWithPath:fullPath completionBlock:^{
// self.isPlaying = NO;
// sender.selected = NO;
// [[XPSkillCardPlayerManager shareInstance] stopMusic];
// }];
// } else {
// if (![[NSFileManager defaultManager] fileExistsAtPath:filePath]) {
// NSFileManager *fileMgr = [[NSFileManager alloc] init];
// [fileMgr createDirectoryAtPath:filePath withIntermediateDirectories:YES attributes:nil error:nil];
// }
// [self downloadAudioWithFileName:fileName musicUrl:url completion:^(BOOL isSuccess, NSString *editAudioPath) {
// self.isPlaying = YES;
// sender.selected = YES;
// [[XPSkillCardPlayerManager shareInstance] playerVoiceWithPath:fullPath completionBlock:^{
// self.isPlaying = NO;
// sender.selected = NO;
// [[XPSkillCardPlayerManager shareInstance] stopMusic];
// }];
// }];
// }
} else {
self.isPlaying = NO;
sender.selected = NO;
[[XPSkillCardPlayerManager shareInstance] stopMusic];
}
}
- (void)downloadAudioWithFileName:(NSString *)fileName musicUrl:(NSString *)musicUrl completion:(void (^) (BOOL isSuccess, NSString *editAudioPath))completion {
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:musicUrl]];
NSURLSessionDownloadTask *download = [manager downloadTaskWithRequest:request progress:^(NSProgress * _Nonnull downloadProgress) {
} destination:^NSURL * _Nonnull(NSURL * _Nonnull targetPath, NSURLResponse * _Nonnull response) {
NSString *filePath = [[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:@"mineSkillCardVoice"] stringByAppendingPathComponent:fileName];
return [NSURL fileURLWithPath:filePath];
} completionHandler:^(NSURLResponse * _Nonnull response, NSURL * _Nullable filePath, NSError * _Nullable error) {
if (!error) {
completion(YES, filePath.path);
} else {
completion(NO, nil);
}
}];
[download resume];
}
#pragma mark - Getters And Setters
- (void)setGreetInfo:(NewUserGreetModel *)greetInfo {
_greetInfo = greetInfo;
if (_greetInfo) {
self.avatarImageView.imageUrl = _greetInfo.sayHelloUserAvatar;
NSString * nick = _greetInfo.sayHelloUserNickname;
if (nick.length > 6) {
nick = [nick substringToIndex:6];
}
[self.nickButton setTitle:nick forState:UIControlStateNormal];
self.greetLabel.text = _greetInfo.sayHelloMsg.length > 0 ? _greetInfo.sayHelloMsg : @"欢迎来到魔力Ta已经等待你很久啦快来一起玩吧~";
self.genderImageView.image = greetInfo.gender == 1 ? [UIImage imageNamed:@"common_male"] : [UIImage imageNamed:@"common_female"];
}
}
- (UIImageView *)logoImageView {
if (!_logoImageView) {
_logoImageView = [[UIImageView alloc] init];
_logoImageView.image = [UIImage imageNamed:@"home_new_user_greet_icon"];
}
return _logoImageView;
}
- (UIView *)avatarAlphaView {
if (!_avatarAlphaView) {
_avatarAlphaView = [[UIView alloc] init];
_avatarAlphaView.backgroundColor = UIColorRGBAlpha(0xffffff, 0.5);
_avatarAlphaView.layer.masksToBounds = YES;
_avatarAlphaView.layer.cornerRadius = 24;
}
return _avatarAlphaView;
}
- (UIImageView *)avatarCoverView {
if (!_avatarCoverView) {
_avatarCoverView = [[UIImageView alloc] init];
_avatarCoverView.userInteractionEnabled = YES;
_avatarCoverView.image = [UIImage gradientColorImageFromColors:@[UIColorFromRGB(0x7BFFD9), UIColorFromRGB(0x3BE4FF)] gradientType:GradientTypeTopToBottom imgSize:CGSizeMake(10, 10)];
_avatarCoverView.layer.masksToBounds = YES;
_avatarCoverView.layer.cornerRadius = 20;
}
return _avatarCoverView;
}
- (NetImageView *)avatarImageView {
if (!_avatarImageView) {
NetImageConfig * config = [[NetImageConfig alloc]init];
config.placeHolder = [UIImageConstant defaultAvatarPlaceholder];
_avatarImageView = [[NetImageView alloc] initWithConfig:config];
_avatarImageView.contentMode = UIViewContentModeScaleAspectFill;
_avatarImageView.layer.masksToBounds = YES;
_avatarImageView.layer.cornerRadius = 16;
}
return _avatarImageView;
}
- (UIButton *)nickButton {
if (!_nickButton) {
_nickButton = [UIButton buttonWithType:UIButtonTypeCustom];
_nickButton.titleLabel.textColor = [UIColor whiteColor];
_nickButton.titleLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium];
}
return _nickButton;
}
- (UIImageView *)genderImageView {
if (!_genderImageView) {
_genderImageView = [[UIImageView alloc] init];
}
return _genderImageView;
}
- (UILabel *)greetLabel {
if (!_greetLabel) {
_greetLabel = [[UILabel alloc] init];
_greetLabel.font = [UIFont systemFontOfSize:12];
_greetLabel.textColor = UIColorFromRGB(0xFFFFFF);
_greetLabel.numberOfLines = 2;
[_greetLabel sizeToFit];
}
return _greetLabel;
}
- (UIButton *)startButton {
if (!_startButton) {
_startButton = [UIButton buttonWithType:UIButtonTypeCustom];
[_startButton setBackgroundImage:[UIImage imageNamed:@"home_new_user_greet_start"] forState:UIControlStateNormal];
[_startButton addTarget:self action:@selector(startButtonAction:) forControlEvents:UIControlEventTouchUpInside];
}
return _startButton;
}
- (UIImageView *)voiceShowBgImage {
if (!_voiceShowBgImage) {
_voiceShowBgImage = [[UIImageView alloc] init];
_voiceShowBgImage.image = [UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xF3F4ED), UIColorFromRGB(0xDFF8FC)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(44, 21)];
_voiceShowBgImage.userInteractionEnabled = YES;
_voiceShowBgImage.layer.cornerRadius = 10.5f;
_voiceShowBgImage.layer.masksToBounds = YES;
}
return _voiceShowBgImage;
}
- (UIButton *)playButton {
if (!_playButton) {
_playButton = [UIButton buttonWithType:UIButtonTypeCustom];
[_playButton setBackgroundImage:[UIImage imageNamed:@"home_new_user_greet_play"] forState:UIControlStateNormal];
[_playButton addTarget:self action:@selector(playButtonAction:) forControlEvents:UIControlEventTouchUpInside];
}
return _playButton;
}
- (UIImageView *)voiceImage {
if (!_voiceImage) {
_voiceImage = [[UIImageView alloc] init];
_voiceImage.image = [UIImage imageNamed:@"home_new_user_greet_wave"];
}
return _voiceImage;
}
- (UIImageView *)effectView {
if (!_effectView) {
_effectView = [[UIImageView alloc] init];
CAGradientLayer *gradientLayer = [CAGradientLayer layer];
gradientLayer.colors = @[(__bridge id)UIColorRGBAlpha(0xffffff, 0).CGColor, (__bridge id)UIColorRGBAlpha(0x000000, 0.75).CGColor];
gradientLayer.locations = @[@0, @1.0];
gradientLayer.startPoint = CGPointMake(0, 0);
gradientLayer.endPoint = CGPointMake(0, 1);
gradientLayer.frame = CGRectMake(0, 0, 240, 115);
[_effectView.layer addSublayer:gradientLayer];
}
return _effectView;
}
@end