SettingsViewController.m 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267
  1. //
  2. // SettingsViewController.m
  3. // 千模
  4. //
  5. // Created by Drew on 2018/10/27.
  6. // Copyright © 2018年 MUMEI. All rights reserved.
  7. //
  8. #import "SettingsViewController.h"
  9. #import <AssetsLibrary/AssetsLibrary.h>
  10. #import <Photos/Photos.h>
  11. #import "UIImageView+RoundCorner.h"
  12. #import "TZImageManager.h"
  13. #import "TZPhotoPreviewController.h"
  14. #import "TZImagePickerController.h"
  15. #import "InfoImageViewController.h"
  16. #import "InfoNickNameViewController.h"
  17. #import "InfoImageViewController.h"
  18. #import "InfoNickNameViewController.h"
  19. #import "InfoPhoneNumViewController.h"
  20. #import "InfoLevelViewController.h"
  21. #import "InfoMoneyViewController.h"
  22. #import "LoginViewController.h"
  23. @interface SettingsViewController () <TZImagePickerControllerDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate>{
  24. NSString *nickName;
  25. }
  26. @property (weak, nonatomic) IBOutlet UIView *section1;
  27. @property (weak, nonatomic) IBOutlet UIView *section2;
  28. @property (weak, nonatomic) IBOutlet UIView *section3;
  29. @property (weak, nonatomic) IBOutlet UIButton *btnLogout;
  30. @property (weak, nonatomic) IBOutlet UIImageView *avatar;
  31. @property (weak, nonatomic) IBOutlet UILabel *nickname;
  32. @property (weak, nonatomic) IBOutlet UILabel *phone;
  33. @property(nonatomic, strong) UIImagePickerController *imagePickerVc;
  34. @property(nonatomic, copy) NSData *imageData;
  35. @property(nonatomic, assign) int photoCount;
  36. @property(nonatomic, assign) int VideoCount;
  37. @end
  38. @implementation SettingsViewController
  39. - (void)viewDidLoad {
  40. [super viewDidLoad];
  41. self.navigationItem.title = @"系统设置";
  42. UIButton * btn = [UIButton buttonWithType:UIButtonTypeCustom];
  43. btn.frame = CGRectMake(0, 0, 40, 40);
  44. [btn setImage:[UIImage imageNamed:@"backBtn"] forState:UIControlStateNormal];
  45. btn.imageEdgeInsets = UIEdgeInsetsMake(0, -20, 0, 0);
  46. [btn addTarget:self action:@selector(backClick) forControlEvents:UIControlEventTouchUpInside];
  47. UIBarButtonItem *leftItem = [[UIBarButtonItem alloc] initWithCustomView:btn];
  48. UIBarButtonItem *nagetiveSpacer = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
  49. nagetiveSpacer.width = -12;//这个值可以根据自己需要自己调整
  50. self.navigationItem.leftBarButtonItems = @[nagetiveSpacer, leftItem];
  51. }
  52. -(void)backClick{
  53. [self.navigationController popViewControllerAnimated:YES];
  54. }
  55. -(void)viewDidLayoutSubviews{
  56. [super viewDidLayoutSubviews];
  57. self.btnLogout.layer.cornerRadius = 22;
  58. self.btnLogout.layer.shadowColor = [UIColor colorWithRed:255/255.0 green:64/255.0 blue:149/255.0 alpha:0.36].CGColor;
  59. self.btnLogout.layer.shadowOffset = CGSizeMake(0,8);
  60. self.btnLogout.layer.shadowOpacity = 1;
  61. self.btnLogout.layer.shadowRadius = 10;
  62. }
  63. -(void)viewWillAppear:(BOOL)animated{
  64. [super viewWillAppear:animated];
  65. [self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
  66. [self.navigationController.navigationBar setShadowImage:[UIImage new]];
  67. [self getInfo];
  68. }
  69. -(void)viewWillDisappear:(BOOL)animated{
  70. [super viewWillDisappear:animated];
  71. [self.navigationController.navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];
  72. [self.navigationController.navigationBar setShadowImage:nil];
  73. }
  74. - (void)getInfo {
  75. NSString *str = [NSString stringWithFormat:@"%@memberInfo?action=getuserinfo&PK=%@", webURL, [Helper sharedAccount].accid];
  76. [[AHHttpManager sharedManager] POST:str parameters:nil success:^(id responseObject) {
  77. NSLog(@"%@", responseObject);
  78. if ([[responseObject objectForKey:@"msg"] isEqualToString:@"success"]) {
  79. NSDictionary *data = responseObject[@"data"];
  80. nickName = data[@"pet"];
  81. self.nickname.text = data[@"pet"];
  82. self.phone.text = data[@"phone"];
  83. [self.avatar sd_setImageWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@%@", imageURl, data[@"hphoto"]]] placeholderImage:[UIImage imageNamed:@"default_avatar"]];
  84. } else {
  85. [MBProgressHUD showTextHUD:@"超时" inView:self.view hideAfterDelay:1];
  86. }
  87. } failure:^(NSError *error) {
  88. NSLog(@"error = %@", error);
  89. [MBProgressHUD showTextHUD:@"超时" inView:self.view hideAfterDelay:1];
  90. }];
  91. }
  92. - (void)PushInfo {
  93. NSString *str = [NSString stringWithFormat:@"%@/upload", webURL];
  94. // NSString *str = @"http://192.168.0.113:8080/thmodel/upload";
  95. NSLog(@"str = %@", str);
  96. // NSString *str = [NSString stringWithFormat:@"%@modelInfo?action=doQryBroke",webURL];
  97. AFHTTPSessionManager *manger = [AFHTTPSessionManager manager];
  98. manger.responseSerializer = [AFHTTPResponseSerializer serializer];
  99. manger.requestSerializer = [AFJSONRequestSerializer serializer];
  100. manger.securityPolicy.allowInvalidCertificates = YES;
  101. NSDictionary *dict = @{@"memberpk": [Helper sharedAccount].accid,
  102. @"action": @"hp"
  103. };
  104. [manger POST:str parameters:dict constructingBodyWithBlock:^(id <AFMultipartFormData> _Nonnull formData) {
  105. if (_imageData == NULL) {
  106. } else {
  107. NSLog(@"_imageData = %@", _imageData);
  108. [formData appendPartWithFileData:_imageData name:@"img" fileName:@"111.png" mimeType:@"image/png"];
  109. NSLog(@"image = %@", _imageData);
  110. }
  111. } progress:nil success:^(NSURLSessionDataTask *_Nonnull task, id _Nullable responseObject) {
  112. NSLog(@"re = %@", responseObject);
  113. NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers | NSJSONReadingMutableLeaves error:nil];
  114. NSString *img = [dic objectForKey:@"img"];
  115. [[NIMSDK sharedSDK].userManager updateMyUserInfo:@{@(NIMUserInfoUpdateTagAvatar): [NSString stringWithFormat:@"%@%@", imageURl, img]} completion:nil];
  116. NSLog(@"%@", dic);
  117. } failure:^(NSURLSessionDataTask *_Nullable task, NSError *_Nonnull error) {
  118. }];
  119. }
  120. - (IBAction)tapAvatar:(id)sender {
  121. UIAlertController *actionSheet = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:UIAlertControllerStyleActionSheet];
  122. [actionSheet addAction:[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
  123. [self dismissViewControllerAnimated:YES completion:^{
  124. }];
  125. }]];
  126. [actionSheet addAction:[UIAlertAction actionWithTitle:@"拍照" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
  127. [self takePhoto];
  128. }]];
  129. [actionSheet addAction:[UIAlertAction actionWithTitle:@"选择相册照片" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
  130. [self pushImagePickerController];
  131. }]];
  132. [self presentViewController:actionSheet animated:YES completion:nil];
  133. }
  134. - (IBAction)logout:(id)sender {
  135. UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"确定退出登录?" message:nil preferredStyle:UIAlertControllerStyleAlert];
  136. [alert addAction:[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil]];
  137. [alert addAction:[UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
  138. [self setupLoginViewController];
  139. [[[NIMSDK sharedSDK] loginManager] logout:^(NSError *error) {
  140. NSString *appDomain = [[NSBundle mainBundle] bundleIdentifier];
  141. [[NSUserDefaults standardUserDefaults] removePersistentDomainForName:appDomain];
  142. }];
  143. }]];
  144. [self.navigationController presentViewController:alert animated:YES completion:nil];
  145. }
  146. - (void)setupLoginViewController {
  147. [self.view.window.rootViewController dismissViewControllerAnimated:YES completion:nil];
  148. LoginViewController *loginController = [[LoginViewController alloc] init];
  149. UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:loginController];
  150. self.view.window.rootViewController = nav;
  151. }
  152. #pragma 上传头像
  153. - (void)pushImagePickerController {
  154. TZImagePickerController *imagePickerVc = [[TZImagePickerController alloc] initWithMaxImagesCount:1 columnNumber:1 delegate:self pushPhotoPickerVc:YES];
  155. imagePickerVc.allowPickingGif = NO;
  156. imagePickerVc.allowPickingVideo = NO;
  157. imagePickerVc.allowTakePicture = NO;
  158. imagePickerVc.allowCrop = YES;
  159. // You can get the photos by block, the same as by delegate.
  160. // 你可以通过block或者代理,来得到用户选择的照片.
  161. [imagePickerVc setDidFinishPickingPhotosHandle:^(NSArray<UIImage *> *photos, NSArray *assets, BOOL isSelectOriginalPhoto) {
  162. }];
  163. [self presentViewController:imagePickerVc animated:YES completion:nil];
  164. }
  165. - (void)takePhoto {
  166. AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];
  167. if ((authStatus == AVAuthorizationStatusRestricted || authStatus == AVAuthorizationStatusDenied) && iOS7Later) {
  168. UIAlertController *actionSheet = [UIAlertController alertControllerWithTitle:@"无法使用照相机" message:@"请在iPhone的\"设置-隐私-照片\"选项中,\r允许千模访问你的手机相册" preferredStyle:UIAlertControllerStyleAlert];
  169. [actionSheet addAction:[UIAlertAction actionWithTitle:@"确认" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
  170. [self dismissViewControllerAnimated:YES completion:^{
  171. }];
  172. }]];
  173. [self presentViewController:actionSheet animated:YES completion:nil];
  174. } else { // 调用相机
  175. self.imagePickerVc = [[UIImagePickerController alloc] init];
  176. self.imagePickerVc.delegate = self;
  177. UIImagePickerControllerSourceType sourceType = UIImagePickerControllerSourceTypeCamera;
  178. self.imagePickerVc.sourceType = sourceType;
  179. [self presentViewController:self.imagePickerVc animated:YES completion:nil];
  180. }
  181. }
  182. - (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
  183. if ([picker isKindOfClass:[UIImagePickerController class]]) {
  184. [picker dismissViewControllerAnimated:YES completion:nil];
  185. }
  186. }
  187. - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
  188. [picker dismissViewControllerAnimated:YES completion:nil];
  189. NSString *type = info[UIImagePickerControllerMediaType];
  190. if ([type isEqualToString:@"public.image"]) {
  191. TZImagePickerController *tzImagePickerVc = [[TZImagePickerController alloc] initWithMaxImagesCount:1 delegate:self];
  192. [tzImagePickerVc showProgressHUD];
  193. UIImage *image = info[UIImagePickerControllerOriginalImage];
  194. // save photo and get asset / 保存图片,获取到asset
  195. [[TZImageManager manager] savePhotoWithImage:image completion:^(NSError *error) {
  196. if (error) {
  197. [tzImagePickerVc hideProgressHUD];
  198. NSLog(@"图片保存失败 %@", error);
  199. } else {
  200. [[TZImageManager manager] getCameraRollAlbum:NO allowPickingImage:YES completion:^(TZAlbumModel *model) {
  201. [[TZImageManager manager] getAssetsFromFetchResult:model.result allowPickingVideo:NO allowPickingImage:YES completion:^(NSArray<TZAssetModel *> *models) {
  202. [tzImagePickerVc hideProgressHUD];
  203. TZAssetModel *assetModel = [models firstObject];
  204. if (tzImagePickerVc.sortAscendingByModificationDate) {
  205. assetModel = [models lastObject];
  206. }
  207. // 允许裁剪,去裁剪
  208. TZImagePickerController *imagePicker = [[TZImagePickerController alloc] initCropTypeWithAsset:assetModel.asset photo:image completion:^(UIImage *cropImage, id asset) {
  209. self.imageData = UIImageJPEGRepresentation(cropImage, 0.2);
  210. self.avatar.image = cropImage;
  211. _imageData = UIImageJPEGRepresentation(cropImage, 0.2);
  212. [self PushInfo];
  213. }];
  214. [self presentViewController:imagePicker animated:YES completion:nil];
  215. }];
  216. }];
  217. }
  218. }];
  219. }
  220. }
  221. - (void)imagePickerController:(TZImagePickerController *)picker didFinishPickingPhotos:(NSArray *)photos sourceAssets:(NSArray *)assets isSelectOriginalPhoto:(BOOL)isSelectOriginalPhoto {
  222. _imageData = UIImageJPEGRepresentation(photos[0], 0.2);
  223. self.avatar.image = photos[0];
  224. [picker dismissViewControllerAnimated:YES completion:nil];
  225. [self PushInfo];
  226. }
  227. - (IBAction)changeName:(id)sender {
  228. InfoNickNameViewController * nameVc = [[InfoNickNameViewController alloc]init];
  229. nameVc.nameStr = nickName;
  230. [self.navigationController pushViewController:nameVc animated:YES];
  231. }
  232. @end