| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481 |
- //
- // MOFirstInfoSetVC.m
- // MiMoLive
- //
- // Created by SuperC on 2023/10/9.
- //
- #import "MOFirstInfoSetVC.h"
- #import "POLanguageVC.h"
- #import "MOImagePickerController.h"
- #import "MOAnchorRecommendVC.h"
- #import "UIImage+YYAdd.h"
- #import "MOBacklogTimeSelectView.h"
- @interface MOFirstInfoSetVC ()<TZImagePickerControllerDelegate, UITextFieldDelegate>
- @property (weak, nonatomic) IBOutlet UILabel *tipOneLab;
- @property (weak, nonatomic) IBOutlet UILabel *tipTwoLab;
- @property (weak, nonatomic) IBOutlet NSLayoutConstraint *titleBottom;
- @property (weak, nonatomic) IBOutlet UIImageView *bgImgView;
- @property (weak, nonatomic) IBOutlet UIView *centerView;
- @property (weak, nonatomic) IBOutlet UIImageView *headImgView;
- @property (weak, nonatomic) IBOutlet UIButton *manBtn;
- @property (weak, nonatomic) IBOutlet UIButton *womanBtn;
- @property (weak, nonatomic) IBOutlet UIImageView *nameBgImgView;
- @property (weak, nonatomic) IBOutlet UITextField *nameTef;
- @property (weak, nonatomic) IBOutlet UIButton *randomNameButton;
- @property (weak, nonatomic) IBOutlet UIImageView *birthdayBgImgView;
- @property (weak, nonatomic) IBOutlet UILabel *birthdayLabel;
- @property (weak, nonatomic) IBOutlet UIButton *doneBtn;
- @property (weak, nonatomic) IBOutlet NSLayoutConstraint *doneBtnBottom;
- /** 头像的Url */
- @property (nonatomic, copy) NSString *headImgUrl;
- /** 头像 */
- @property (nonatomic, strong) UIImage *headImg;
- @property (nonatomic, copy) NSString *birthdayString;
- @property (nonatomic, copy) NSArray *nicknames;
- @property (nonatomic, assign) NSInteger lastNicknameIndex;
- @property (nonatomic, copy) NSArray *avatars;
- #if !TARGET_IPHONE_SIMULATOR
- @property (nonatomic, strong) SSDKUser *userData;
- #endif
- /** 男生随机对象 */
- @property (nonatomic, strong) NSDictionary *maleDict;
- /** 女生随机对象 */
- @property (nonatomic, strong) NSDictionary *femaleDict;
- @end
- @implementation MOFirstInfoSetVC
- - (void)viewDidLoad {
- [super viewDidLoad];
- [self initData];
- [self setupUI];
- #if !TARGET_IPHONE_SIMULATOR
- [self loadRandomProfileData];
- #endif
- }
- - (void)initData {
- self.headImgUrl = @"";
- self.birthdayString = @"2000-01-01";
-
- self.lastNicknameIndex = -1;
- }
- #if !TARGET_IPHONE_SIMULATOR
- /// 预输入用户数据,第三方登录的才有
- - (void)preFillUpUserData:(SSDKUser *)userData {
- self.userData = userData;
-
- // MOLogV(@"name = %@, icon = %@, bigIcon = %@, gender = %zd, birthday = %@", userData.nickname, userData.icon, userData.bigIcon, userData.gender, userData.birthday);
- }
- - (void)loadRandomProfileData {
- WEAKSELF
- [kHttpManager toGetTheRandomProfileWithParams:nil andBlock:^(id _Nonnull data, NSError * _Nonnull error) {
- if(kCode_Success){
- NSLog(@"%@",[[NSString alloc] initWithData:[NSJSONSerialization dataWithJSONObject:data options:0 error:nil] encoding:NSUTF8StringEncoding]);
- NSDictionary *theData = (NSDictionary *)data[@"data"];
- weakSelf.maleDict = [MODataManager objectOrNilForKey:@"male" fromDictionary:theData];
- weakSelf.femaleDict = [MODataManager objectOrNilForKey:@"female" fromDictionary:theData];
-
- [weakSelf toUpdataTheNicknamesAndAvatars];
-
- if (weakSelf.userData.nickname.length > 0) {//第三方登录有昵称
- weakSelf.nameTef.text = weakSelf.userData.nickname;
- } else {
- if (weakSelf.nicknames.count > 0) {//获取配置昵称随机
- weakSelf.nameTef.text = [weakSelf randomNickname];
- }
- }
-
- if (self.userData.icon.length > 0) {//第三方登录有头像
- [weakSelf.headImgView sd_setImageWithURL:[NSURL URLWithString:self.userData.icon] placeholderImage:[UIImage imageNamed:@"icon_mine_placeHolder"] completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
- weakSelf.headImg = image;
- [weakSelf uploadOssS3];
- }];
-
- } else {
- if (weakSelf.avatars.count > 0) {//获取配置头像随机
- weakSelf.headImgUrl = [self randomAvatar];
- [weakSelf.headImgView sd_setImageWithURL:[NSURL URLWithString:weakSelf.headImgUrl] placeholderImage:[UIImage imageNamed:@"icon_mine_placeHolder"]];
- }
- }
-
- }
- else{
- MOLogV(@"toGetTheRandomProfileWithParams 接口报错了");
- }
- }];
- }
- #endif
- - (void)toUpdataTheNicknamesAndAvatars{
- if(self.womanBtn.selected){
- self.nicknames = [MODataManager objectOrNilForKey:@"nicknames" fromDictionary:self.femaleDict];
- self.avatars = [MODataManager objectOrNilForKey:@"avatars" fromDictionary:self.femaleDict];
- }
- else{
- self.nicknames = [MODataManager objectOrNilForKey:@"nicknames" fromDictionary:self.maleDict];
- self.avatars = [MODataManager objectOrNilForKey:@"avatars" fromDictionary:self.maleDict];
- }
- }
- - (NSString *)randomAvatar {
- if (self.avatars.count == 0) return @"";
- if (self.avatars.count == 1) {
- return self.avatars.firstObject;
- }
- NSUInteger index = arc4random_uniform((uint32_t)self.avatars.count);
- return self.avatars[index];
- }
- - (NSString *)randomNickname {
- if (self.nicknames.count == 0) return @"";
- if (self.nicknames.count == 1) {
- self.lastNicknameIndex = 0;
- return self.nicknames.firstObject;
- }
-
- NSInteger newIndex = self.lastNicknameIndex;
- while (self.nicknames.count > 1 && newIndex == self.lastNicknameIndex) {
- newIndex = arc4random_uniform((uint32_t)self.nicknames.count);
- }
- self.lastNicknameIndex = newIndex;
- return self.nicknames[newIndex];
- }
- - (void)randomNameButtonAction {
-
- [self toUpdateTheAvatars];//更改头像
-
- //更改昵称
- NSString *nickname = [self randomNickname];
- self.nameTef.text = nickname;
-
- [self updateDoneButtonState];
- }
- - (void)setupUI{
- self.centerView.backgroundColor = [UIColor clearColor];
- self.titleBottom.constant = kScaleWidth(80);
-
- self.tipOneLab.font = [MOTextTools poppinsExtraBoldFont:36];
- self.tipOneLab.textColor = [MOTools colorWithHexString:@"#FFFFFF"];
- self.tipOneLab.text = NSLocalString(@"mimo_2_live_welcome");
- self.tipOneLab.numberOfLines = 1;
- self.tipOneLab.adjustsFontSizeToFitWidth = YES;
-
- self.tipTwoLab.font = [MOTextTools poppinsSemiBoldFont:28];
- self.tipTwoLab.textColor = [MOTools colorWithHexString:@"#FFFFFF"];
- self.tipTwoLab.text = NSLocalString(@"mimo_login_set_info");
- self.tipOneLab.numberOfLines = 1;
- self.tipOneLab.adjustsFontSizeToFitWidth = YES;
-
- [self.centerView sendSubviewToBack:self.headImgView];
- self.headImgView.userInteractionEnabled = YES;
- self.headImgView.layer.cornerRadius = 60;
- self.headImgView.layer.masksToBounds = YES;
- [self.headImgView setImage:[UIImage imageNamed:@"icon_mine_placeHolder"]];
- self.headImgView.contentMode = UIViewContentModeScaleAspectFill;
- UITapGestureRecognizer *headTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(headImgClick)];
- [self.headImgView addGestureRecognizer:headTap];
-
- [self.manBtn setTitle:NSLocalString(@"mimo_login_gender_man") forState:UIControlStateNormal];
- [self.manBtn setImage:[UIImage imageNamed:@"icon_wel_male"] forState:UIControlStateNormal];
- [self.manBtn setImage:[UIImage imageNamed:@"icon_wel_male"] forState:UIControlStateSelected];
- [self.manBtn setBackgroundImage:[UIImage imageNamed:@"img_selected_gender_bg"] forState:UIControlStateSelected];
- [self.manBtn setFont:[MOTextTools poppinsBoldFont:16]];
- [self.manBtn setTitleColor:[MOTools colorWithHexString:@"#33C9FF"] forState:UIControlStateNormal];
- self.manBtn.titleEdgeInsets = UIEdgeInsetsMake(0.0, 4.0, 0.0, 0.0);
- self.manBtn.imageEdgeInsets = UIEdgeInsetsMake(0.0, 0.0, 0.0, 4.0);
- self.manBtn.backgroundColor = [MOTools colorWithHexString:@"#17171A" alpha:0.2];
- self.manBtn.layer.masksToBounds = YES;
- self.manBtn.layer.cornerRadius = 12;
- #if !TARGET_IPHONE_SIMULATOR
- if (self.userData && self.userData.gender == 0) {
- self.manBtn.selected = YES;
- }
- #endif
-
- [self.womanBtn setTitle:NSLocalString(@"mimo_login_gender_woman") forState:UIControlStateNormal];
- [self.womanBtn setImage:[UIImage imageNamed:@"icon_wel_female"] forState:UIControlStateNormal];
- [self.womanBtn setImage:[UIImage imageNamed:@"icon_wel_female"] forState:UIControlStateSelected];
- [self.womanBtn setBackgroundImage:[UIImage imageNamed:@"img_selected_gender_bg"] forState:UIControlStateSelected];
- [self.womanBtn setFont:[MOTextTools poppinsBoldFont:16]];
- [self.womanBtn setTitleColor:[MOTools colorWithHexString:@"#FF4DA6"] forState:UIControlStateNormal];
- self.womanBtn.titleEdgeInsets = UIEdgeInsetsMake(0.0, 4.0, 0.0, 0.0);
- self.womanBtn.imageEdgeInsets = UIEdgeInsetsMake(0.0, 0.0, 0.0, 4.0);
- self.womanBtn.backgroundColor = [MOTools colorWithHexString:@"#17171A" alpha:0.2];
- self.womanBtn.layer.masksToBounds = YES;
- self.womanBtn.layer.cornerRadius = 12;
- #if !TARGET_IPHONE_SIMULATOR
- if (self.userData && self.userData.gender == 1) {
- self.womanBtn.selected = YES;
- }
- #endif
-
- self.nameBgImgView.image = [[UIImage imageNamed:@"img_info_border_bg"] imageByResizeToSize:CGSizeMake(SCREENWIDTH - 48, 52)];
- [self.nameTef setFont:[MOTextTools poppinsRegularFont:16]];
- self.nameTef.textColor = kBaseTextColor_1;
- self.nameTef.backgroundColor = [UIColor clearColor];
- self.nameTef.delegate = self;
- [self.nameTef addTarget:self action:@selector(nameTextFieldChanged:) forControlEvents:UIControlEventEditingChanged];
- self.nameTef.placeholder = NSLocalString(@"mimo_login_nick_name_placeholder");
-
- self.birthdayBgImgView.image = [[UIImage imageNamed:@"img_info_border_bg"] imageByResizeToSize:CGSizeMake(SCREENWIDTH - 48, 52)];
- self.birthdayBgImgView.userInteractionEnabled = YES;
- UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(birthdayBgImgViewTapAction)];
- [self.birthdayBgImgView addGestureRecognizer:tap];
- self.birthdayLabel.font = [MOTextTools poppinsRegularFont:16];
- self.birthdayLabel.textColor = kBaseTextColor_1;
- self.birthdayLabel.text = [NSString stringWithFormat:@"%@", self.birthdayString];
-
- [self.doneBtn setFont:[MOTextTools poppinsSemiBoldFont:16]];
- [self.doneBtn setTitleColor:[MOTools colorWithHexString:@"#FFFFFF"] forState:UIControlStateNormal];
- [self.doneBtn setTitle:NSLocalString(@"mimo_login_next_text") forState:UIControlStateNormal];
- self.doneBtn.layer.masksToBounds = YES;
- self.doneBtn.layer.cornerRadius = 12;
- NSArray *colorArr = @[kBaseColorLeft,kBaseColorRight];
- UIImage *image = [MOTools createGradientRectImageWithBounds:CGRectMake(0, 0, (SCREENWIDTH - 24.0 * 2), 48.0) Colors:colorArr GradientType:0];
- [self.doneBtn setBackgroundImage:image forState:UIControlStateNormal];
- self.doneBtnBottom.constant = kBottomSafeAreaInset + 16;
- self.doneBtn.alpha = 0.5;
-
- self.randomNameButton.semanticContentAttribute = UISemanticContentAttributeForceRightToLeft;
- [self.randomNameButton setTitle:NSLocalString(@"mimo_login_name_random") forState:UIControlStateNormal];
- [self.randomNameButton setTitleColor:kBaseTextColor_3 forState:UIControlStateNormal];
- self.randomNameButton.titleLabel.font = [MOTextTools poppinsRegularFont:14];
- [self.randomNameButton addTarget:self action:@selector(randomNameButtonAction) forControlEvents:UIControlEventTouchUpInside];
-
- [self updateDoneButtonState];
- }
- #pragma mark - UITextFieldDelegate
- - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
- if (textField == self.nameTef) {
- NSString *toBeString = [textField.text stringByReplacingCharactersInRange:range withString:string];
- return toBeString.length <= 16;
- }
- return YES;
- }
- - (void)nameTextFieldChanged:(UITextField *)textField {
- [self updateDoneButtonState];
- }
- - (void)updateDoneButtonState {
- BOOL hasGender = self.manBtn.selected || self.womanBtn.selected;
- BOOL hasName = self.nameTef.text.length >= 2;
- BOOL hasAvatar = self.headImg || self.headImgUrl.length > 0;
- // self.doneBtn.enabled = hasGender && hasName && hasAvatar;
- self.doneBtn.alpha = (hasGender && hasName && hasAvatar) ? 1.0 : 0.5;
- }
- - (void)birthdayBgImgViewTapAction {
- WEAKSELF
- MOBacklogTimeSelectView *setRemindTimeView = [[MOBacklogTimeSelectView alloc] initForOperateSuccessWithFrame:CGRectMake(0, 0, SCREENWIDTH, SCREENHEIGHT)];
- setRemindTimeView.doneBtnBlock = ^(NSDate * _Nonnull endDate) {
- NSDateFormatter *dateFormatter = [NSDateFormatter getSingletonDateFormatterWithFormat:@"yyyy-MM-dd"];
- self.birthdayString = [dateFormatter stringFromDate:endDate];
- weakSelf.birthdayLabel.text = self.birthdayString;
- };
- [setRemindTimeView show];
- }
- - (void)viewDidAppear:(BOOL)animated {
- [super viewDidAppear:animated];
- // 不允许右滑返回
- [self.navigationController.interactivePopGestureRecognizer setEnabled:NO];
- }
- ///头像点击
- - (void)headImgClick {
- MOImagePickerController *imagePickerController = [[MOImagePickerController alloc] initWithMaxImagesCount:1 columnNumber:4 delegate:self pushPhotoPickerVc:YES];
- imagePickerController.cropRect = CGRectMake(0, 200.0, SCREENWIDTH, SCREENWIDTH);
- imagePickerController.allowCrop = YES;
- [self presentViewController:imagePickerController animated:YES completion:nil];
- }
- - (IBAction)manBtnClick:(id)sender {
-
- if(self.manBtn.selected){
- return;
- }
-
- self.manBtn.selected = YES;
- self.womanBtn.selected = NO;
-
- [self toUpdataTheNicknamesAndAvatars];//更新头像和昵称源
-
- [self randomNameButtonAction];//更新昵称
- }
- - (IBAction)womanBtnClick:(id)sender {
-
- if(self.womanBtn.selected){
- return;
- }
-
- self.manBtn.selected = NO;
- self.womanBtn.selected = YES;
-
- [self toUpdataTheNicknamesAndAvatars];
-
- [self randomNameButtonAction];//更新昵称
- }
- - (void)toUpdateTheAvatars{
- #if !TARGET_IPHONE_SIMULATOR
- if (self.userData.icon.length > 0) {//第三方登录有头像
- //不做处理
-
- } else {
- if (self.avatars.count > 0) {//获取配置头像随机
- self.headImgUrl = [self randomAvatar];
- [self.headImgView sd_setImageWithURL:[NSURL URLWithString:self.headImgUrl] placeholderImage:[UIImage imageNamed:@"icon_mine_placeHolder"]];
- }
- }
- #endif
- }
- ///下一步按钮点击
- - (IBAction)nextStepClick:(id)sender {
-
- if(self.headImg == nil && self.headImgUrl.length == 0){
- [MBProgressHUD showTipMessageInView:NSLocalString(@"mimo_family_apply_avatar_empty_tip")];
- return;
- }
-
- if (!self.manBtn.isSelected && !self.womanBtn.isSelected) {
- [MBProgressHUD showTipMessageInView:NSLocalString(@"mimo_user_edit_select_gender_title")];
- return;
- }
-
- NSInteger gender = 1;
- if(self.manBtn.selected == YES){
- gender = 1;
- } else {
- gender = 2;
- }
-
- if(self.nameTef.text.length == 0){
- [MBProgressHUD showTipMessageInView:NSLocalString(@"mimo_common_enter_nickname")];
- return;
- }
-
- if(self.nameTef.text.length == 1){//昵称过短
- [MBProgressHUD showTipMessageInView:NSLocalString(@"mimo_login_nick_name_short_tips")];
- return;
- }
-
-
- NSDictionary *dict = @{@"avatar":self.headImgUrl,
- @"gender":@(gender),
- @"nickname":self.nameTef.text,
- @"birthday":self.birthdayString};
-
- WEAKSELF
- [kHttpManager toSettingInfoWithParams:dict andBlock:^(id _Nonnull data, NSError * _Nonnull error) {
- if(kCode_Success){
-
- // [MBProgressHUD showTipMessageInWindow:NSLocalString(@"mimo_common_success")];
-
- NSDictionary *baseDict = data[@"data"];
-
- //更新头像
- NSString *avatarString = [MODataManager objectOrNilForKey:@"avatar" fromDictionary:baseDict];
- if(avatarString.length > 0){
- [[NSUserDefaults standardUserDefaults] setObject:avatarString forKey:kAvatar];
- }
-
- //更新性别信息
- NSInteger gender = [[MODataManager objectOrNilForKey:@"gender" fromDictionary:baseDict] integerValue];
- [[NSUserDefaults standardUserDefaults] setObject:@(gender) forKey:kGender];
-
- //更新昵称信息
- NSString *nickNameString = [MODataManager objectOrNilForKey:@"nickname" fromDictionary:baseDict];
- if(nickNameString.length > 0){
- [[NSUserDefaults standardUserDefaults] setObject:nickNameString forKey:kNickName];
- }
- [[NSUserDefaults standardUserDefaults] synchronize];
- [weakSelf toMainVC];
- }
- else{
- kShowNetError(data)
- }
- }];
-
-
- }
- - (void)toMainVC {
- if (self.navigationController.presentingViewController) {//如果是present出来的要dismiss
- [self.navigationController dismissViewControllerAnimated:YES completion:nil];
- }
-
- MOMainTabController *mainTabbar = [MOMainTabController sharedSingleton];
- [mainTabbar toResetSetupTabbar];
- [UIApplication sharedApplication].keyWindow.rootViewController = mainTabbar;
- }
- - (void)imagePickerController:(TZImagePickerController *)picker didFinishPickingPhotos:(NSArray<UIImage *> *)photos sourceAssets:(NSArray *)assets isSelectOriginalPhoto:(BOOL)isSelectOriginalPhoto infos:(NSArray<NSDictionary *> *)infos{
-
- self.headImg = photos.firstObject;
- [self.headImgView setImage:self.headImg];
-
- [self uploadOssS3];
- }
- - (void)uploadOssS3 {
- NSDictionary *dict = @{@"type":@(1),
- @"suffix":@"jpg"};
-
- WEAKSELF
- [kHttpManager getBaseOssS3WithParams:dict andBlock:^(id _Nonnull data, NSError * _Nonnull error) {
- if(kCode_Success){
- NSDictionary *tempDict = data[@"data"];
-
- NSString *baseUrl = [MODataManager objectOrNilForKey:@"preSignUrl" fromDictionary:tempDict];
-
- weakSelf.headImgUrl = [MODataManager objectOrNilForKey:@"fileUrl" fromDictionary:tempDict];
- [weakSelf updateDoneButtonState];
- NSData *imageData = UIImageJPEGRepresentation(weakSelf.headImg, 1);
-
- [kHttpManager sendSingleChatImage:imageData params:nil type:@"image/jpg" andBaseUrl:baseUrl withUploadProgressHandler:^(NSProgress * uploadProgress) {
- float progress = 1.0*uploadProgress.completedUnitCount/uploadProgress.totalUnitCount;
- MOLogV(@"Image upload Progress: %.2f%%", progress * 100);
- } andCompletionBlock:^(id _Nonnull data, NSError * _Nonnull error) {
- if(error == nil){
- MOLogV(@"图片上传成功~");
- }
- }];
- }
- else{
- kShowNetError(data)
- }
- }];
- }
- @end
|