// // SettingsViewController.m // 千模 // // Created by Drew on 2018/10/27. // Copyright © 2018年 MUMEI. All rights reserved. // #import "SettingsViewController.h" #import #import #import "TZImageManager.h" #import "TZPhotoPreviewController.h" #import "TZImagePickerController.h" #import "LoginViewController.h" @interface SettingsViewController () { NSString *nickName; } @property (weak, nonatomic) IBOutlet UIView *section1; @property (weak, nonatomic) IBOutlet UIView *section2; @property (weak, nonatomic) IBOutlet UIView *section3; @property (weak, nonatomic) IBOutlet UIButton *btnLogout; @property (weak, nonatomic) IBOutlet UIImageView *avatar; @property (weak, nonatomic) IBOutlet UILabel *nickname; @property (weak, nonatomic) IBOutlet UILabel *phone; @property (weak, nonatomic) IBOutlet UISwitch *switchNotification; @property(nonatomic, strong) UIImagePickerController *imagePickerVc; @property(nonatomic, copy) NSData *imageData; @property(nonatomic, assign) int photoCount; @property(nonatomic, assign) int VideoCount; @end @implementation SettingsViewController - (void)viewDidLoad { [super viewDidLoad]; self.navigationItem.title = @"系统设置"; UIButton * btn = [UIButton buttonWithType:UIButtonTypeCustom]; btn.frame = CGRectMake(0, 0, 40, 40); [btn setImage:[UIImage imageNamed:@"backBtn"] forState:UIControlStateNormal]; btn.imageEdgeInsets = UIEdgeInsetsMake(0, -20, 0, 0); [btn addTarget:self action:@selector(backClick) forControlEvents:UIControlEventTouchUpInside]; UIBarButtonItem *leftItem = [[UIBarButtonItem alloc] initWithCustomView:btn]; UIBarButtonItem *nagetiveSpacer = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil]; nagetiveSpacer.width = -12;//这个值可以根据自己需要自己调整 self.navigationItem.leftBarButtonItems = @[nagetiveSpacer, leftItem]; BOOL showNotification = ![[NSUserDefaults standardUserDefaults] boolForKey:@"disableNotification"]; [self.switchNotification setOn:showNotification]; } -(void)backClick{ [self.navigationController popViewControllerAnimated:YES]; } -(void)viewDidLayoutSubviews{ [super viewDidLayoutSubviews]; self.btnLogout.layer.cornerRadius = 22; self.btnLogout.layer.shadowColor = [UIColor colorWithRed:255/255.0 green:64/255.0 blue:149/255.0 alpha:0.36].CGColor; self.btnLogout.layer.shadowOffset = CGSizeMake(0,8); self.btnLogout.layer.shadowOpacity = 1; self.btnLogout.layer.shadowRadius = 10; } -(void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; [self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault]; [self.navigationController.navigationBar setShadowImage:[UIImage new]]; [self getInfo]; } -(void)viewWillDisappear:(BOOL)animated{ [super viewWillDisappear:animated]; [self.navigationController.navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault]; [self.navigationController.navigationBar setShadowImage:nil]; } - (void)getInfo { [MBProgressHUD showHUDAddedTo:self.view animated:YES]; NSDictionary *dic = [[NSDictionary alloc] initWithObjectsAndKeys:[ModelUser user].modelpk,@"modelpk", nil]; [YanCNetWorkManager requestPostWithURLStr:Url_refreshLogin(PublicUrl) parameters:dic finish:^(id dataDic) { [MBProgressHUD hideHUDForView:self.view animated:YES]; NSString *issuccess = dataDic[@"msg"]; if ([issuccess isEqualToString:@"success"]) { ModelUser *user = [ModelUser modelUser]; [user setValuesForKeysWithDictionary:dataDic[@"data"]]; user.modelpk = dataDic[@"data"][@"modelpk"]; user.coin_a = dataDic[@"data"][@"coin_a"]; user.coin_ir = dataDic[@"data"][@"coin_ir"]; user.pk = dataDic[@"data"][@"pk"]; user.qrcode = dataDic[@"data"][@"qrcode"]; [ModelUser save:user]; self.nickname.text = [NSString stringWithFormat:@"%@", dataDic[@"data"][@"pet"]]; self.phone.text = [NSString stringWithFormat:@"%@", dataDic[@"data"][@"tel"]]; [self.avatar sd_setImageWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@/%@", PublicUrl, dataDic[@"data"][@"hphoto"]]] placeholderImage:[UIImage imageNamed:@"morentouxiang"]]; // if ([dataDic[@"data"][@"hasred"] isEqualToString:@"1"]) { // self.notificationView.hidden = NO; // }else{ // self.notificationView.hidden = YES; // } } else { [MBProgressHUD showInfo:@"请求失败!"]; } } enError:^(NSError *error) { [MBProgressHUD hideHUDForView:self.view animated:YES]; }]; } - (void)PushInfo { NSData *photoData = _imageData; NSInteger length = [photoData length] / 1000; NSLog(@"图片大小:%ld Kb",(long)length); UIImage *smallPhoto = [UIImage imageWithData:photoData]; ModelUser *user = [ModelUser modelUser]; AFHTTPSessionManager * manger =[AFHTTPSessionManager manager]; manger.responseSerializer = [AFHTTPResponseSerializer serializer]; manger.requestSerializer = [AFJSONRequestSerializer serializer]; manger.securityPolicy.allowInvalidCertificates = YES; NSDictionary *dict =@{@"memberpk":user.pk, @"action":@"hp" }; [manger POST:Url_uploadImage(PublicUrl) parameters:dict constructingBodyWithBlock:^(id _Nonnull formData) { if (photoData==NULL) { }else{ [formData appendPartWithFileData:photoData name:@"img" fileName:@"head.png" mimeType:@"image/png"]; } } progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { self.avatar.image = smallPhoto; NSDictionary *dic =[NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers| NSJSONReadingMutableLeaves error:nil]; NSString * img = dic[@"img"]; [[NIMSDK sharedSDK].userManager updateMyUserInfo:@{@(NIMUserInfoUpdateTagAvatar) : [NSString stringWithFormat:@"%@%@",imageURl,img]} completion:nil]; } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { }]; } - (IBAction)tapAvatar:(id)sender { UIAlertController *actionSheet = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:UIAlertControllerStyleActionSheet]; [actionSheet addAction:[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) { [self dismissViewControllerAnimated:YES completion:^{ }]; }]]; [actionSheet addAction:[UIAlertAction actionWithTitle:@"拍照" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) { [self takePhoto]; }]]; [actionSheet addAction:[UIAlertAction actionWithTitle:@"选择相册照片" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) { [self pushImagePickerController]; }]]; [self presentViewController:actionSheet animated:YES completion:nil]; } - (IBAction)logout:(id)sender { UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"确定退出登录?" message:nil preferredStyle:UIAlertControllerStyleAlert]; [alert addAction:[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil]]; [alert addAction:[UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { [self setupLoginViewController]; [[[NIMSDK sharedSDK] loginManager] logout:^(NSError *error) { NSString *appDomain = [[NSBundle mainBundle] bundleIdentifier]; [[NSUserDefaults standardUserDefaults] removePersistentDomainForName:appDomain]; }]; }]]; [self.navigationController presentViewController:alert animated:YES completion:nil]; } - (IBAction)receiveNotificationChanged:(id)sender { BOOL disableNotification = !((UISwitch*)sender).isOn; NIMPushNotificationSetting *setting = [[[NIMSDK sharedSDK] apnsManager] currentSetting]; setting.noDisturbing = disableNotification; setting.noDisturbingStartH = 0; setting.noDisturbingStartM = 0; setting.noDisturbingEndH = 23; setting.noDisturbingEndM = 59; [[[NIMSDK sharedSDK] apnsManager] updateApnsSetting:setting completion:^(NSError *error) {}]; [[NSUserDefaults standardUserDefaults] setBool:disableNotification forKey:@"disableNotification"]; } - (void)setupLoginViewController { [self.view.window.rootViewController dismissViewControllerAnimated:YES completion:nil]; LoginViewController *loginController = [[LoginViewController alloc] init]; UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:loginController]; self.view.window.rootViewController = nav; } #pragma 上传头像 - (void)pushImagePickerController { TZImagePickerController *imagePickerVc = [[TZImagePickerController alloc] initWithMaxImagesCount:1 columnNumber:1 delegate:self pushPhotoPickerVc:YES]; imagePickerVc.allowPickingGif = NO; imagePickerVc.allowPickingVideo = NO; imagePickerVc.allowTakePicture = NO; imagePickerVc.allowCrop = YES; // You can get the photos by block, the same as by delegate. // 你可以通过block或者代理,来得到用户选择的照片. [imagePickerVc setDidFinishPickingPhotosHandle:^(NSArray *photos, NSArray *assets, BOOL isSelectOriginalPhoto) { }]; [self presentViewController:imagePickerVc animated:YES completion:nil]; } - (void)takePhoto { AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo]; if ((authStatus == AVAuthorizationStatusRestricted || authStatus == AVAuthorizationStatusDenied) && iOS7Later) { UIAlertController *actionSheet = [UIAlertController alertControllerWithTitle:@"无法使用照相机" message:@"请在iPhone的\"设置-隐私-照片\"选项中,\r允许千模访问你的手机相册" preferredStyle:UIAlertControllerStyleAlert]; [actionSheet addAction:[UIAlertAction actionWithTitle:@"确认" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) { [self dismissViewControllerAnimated:YES completion:^{ }]; }]]; [self presentViewController:actionSheet animated:YES completion:nil]; } else { // 调用相机 self.imagePickerVc = [[UIImagePickerController alloc] init]; self.imagePickerVc.delegate = self; UIImagePickerControllerSourceType sourceType = UIImagePickerControllerSourceTypeCamera; self.imagePickerVc.sourceType = sourceType; [self presentViewController:self.imagePickerVc animated:YES completion:nil]; } } - (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker { if ([picker isKindOfClass:[UIImagePickerController class]]) { [picker dismissViewControllerAnimated:YES completion:nil]; } } - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { [picker dismissViewControllerAnimated:YES completion:nil]; NSString *type = info[UIImagePickerControllerMediaType]; if ([type isEqualToString:@"public.image"]) { TZImagePickerController *tzImagePickerVc = [[TZImagePickerController alloc] initWithMaxImagesCount:1 delegate:self]; [tzImagePickerVc showProgressHUD]; UIImage *image = info[UIImagePickerControllerOriginalImage]; // save photo and get asset / 保存图片,获取到asset [[TZImageManager manager] savePhotoWithImage:image completion:^(NSError *error) { if (error) { [tzImagePickerVc hideProgressHUD]; NSLog(@"图片保存失败 %@", error); } else { [[TZImageManager manager] getCameraRollAlbum:NO allowPickingImage:YES completion:^(TZAlbumModel *model) { [[TZImageManager manager] getAssetsFromFetchResult:model.result allowPickingVideo:NO allowPickingImage:YES completion:^(NSArray *models) { [tzImagePickerVc hideProgressHUD]; TZAssetModel *assetModel = [models firstObject]; if (tzImagePickerVc.sortAscendingByModificationDate) { assetModel = [models lastObject]; } // 允许裁剪,去裁剪 TZImagePickerController *imagePicker = [[TZImagePickerController alloc] initCropTypeWithAsset:assetModel.asset photo:image completion:^(UIImage *cropImage, id asset) { self.imageData = UIImageJPEGRepresentation(cropImage, 0.2); self.avatar.image = cropImage; _imageData = UIImageJPEGRepresentation(cropImage, 0.2); [self PushInfo]; }]; [self presentViewController:imagePicker animated:YES completion:nil]; }]; }]; } }]; } } - (void)imagePickerController:(TZImagePickerController *)picker didFinishPickingPhotos:(NSArray *)photos sourceAssets:(NSArray *)assets isSelectOriginalPhoto:(BOOL)isSelectOriginalPhoto { _imageData = UIImageJPEGRepresentation(photos[0], 0.2); self.avatar.image = photos[0]; [picker dismissViewControllerAnimated:YES completion:nil]; [self PushInfo]; } - (IBAction)changeName:(id)sender { // InfoNickNameViewController * nameVc = [[InfoNickNameViewController alloc]init]; // nameVc.nameStr = nickName; // [self.navigationController pushViewController:nameVc animated:YES]; } @end