UserLogin_VC.m 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353
  1. //
  2. // UserLogin_VC.m
  3. // Haishenghai-master
  4. //
  5. // Created by GG on 2018/12/29.
  6. // Copyright © 2018年 Haishenghai intelligence network technology. All rights reserved.
  7. //
  8. #import "UserLogin_VC.h"
  9. #import "Header.h"
  10. @interface UserLogin_VC ()<UITextFieldDelegate>
  11. //记录选中效果
  12. @property (nonatomic,assign)BOOL selected;
  13. @end
  14. @implementation UserLogin_VC
  15. #pragma mark - Life Circle
  16. - (void)viewDidLoad {
  17. [super viewDidLoad];
  18. // Do any additional setup after loading the view.
  19. [self setupUI];
  20. NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
  21. if ([defaults boolForKey:@"isRememberPsd"]) {
  22. [defaults setBool:YES forKey:@"isRememberPsd"];
  23. [self.rememberBtn setBackgroundImage:[UIImage imageNamed:@"hsh_login_checkbox_transformation"] forState:UIControlStateNormal];
  24. self.accountTF.text = [[NSUserDefaults standardUserDefaults]objectForKey:@"phone"];
  25. self.passwordTF.text = [[NSUserDefaults standardUserDefaults]objectForKey:@"password"];
  26. }else if(! [defaults boolForKey:@"isRememberPsd"]){
  27. [defaults setBool:NO forKey:@"isRememberPsd"];
  28. [self.rememberBtn setBackgroundImage:[UIImage imageNamed:@"hsh_login_checkbox"] forState:UIControlStateNormal];
  29. }
  30. }
  31. -(void)viewWillAppear:(BOOL)animated{
  32. [super viewWillAppear:animated];
  33. self.navigationController.navigationBarHidden = YES;
  34. // [self.navigationController setNavigationBarHidden:NO animated:NO];
  35. // [self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
  36. //
  37. // [self.navigationController.navigationBar setShadowImage:[UIImage new]];
  38. }
  39. -(void)viewWillDisappear:(BOOL)animated{
  40. [super viewWillDisappear:animated];
  41. self.navigationController.navigationBarHidden = NO;
  42. // [self.navigationController.navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];
  43. // [self.navigationController.navigationBar setShadowImage:nil];
  44. }
  45. - (void)didReceiveMemoryWarning {
  46. [super didReceiveMemoryWarning];
  47. // Dispose of any resources that can be recreated.
  48. }
  49. #pragma mark -Set UI
  50. -(void)setupUI{
  51. /** 设置背景 */
  52. self.view.backgroundColor = [UIColor whiteColor];
  53. /** 设置logo */
  54. [self.logoImageView setImage:[UIImage imageNamed:@"logo"]];
  55. self.logoImageView.frame = CGRectMake(WIDTH/2-55, HEIGHT/4-75, 110, 110);
  56. [self.view addSubview:self.logoImageView];
  57. /** 设置内容视图 *///暂时没用到
  58. // self.containerView.backgroundColor = [UIColor clearColor];
  59. // [self.view addSubview:self.containerView];
  60. /**设置账户输入框 */
  61. self.accountTF.frame = CGRectMake(20, HEIGHT/2-44, WIDTH-40, 44);
  62. self.accountTF.placeholder = @"用户名/手机号";
  63. self.accountTF.tintColor = [UIColor blueColor];
  64. self.accountTF.textColor = [UIColor blackColor];
  65. self.accountTF.font = [UIFont systemFontOfSize:18];
  66. self.accountTF.leftViewMode = UITextFieldViewModeAlways;
  67. // self.accountTF.clearsOnBeginEditing = YES;
  68. // self.accountTF.clearButtonMode = UITextFieldViewModeWhileEditing;
  69. self.accountTF.autocorrectionType =UITextAutocorrectionTypeDefault;
  70. self.accountTF.delegate = self;
  71. //设置左边视图
  72. UIImageView *userImage = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 20, 20)];
  73. userImage.contentMode = UIViewContentModeLeft;
  74. //??
  75. userImage.image = [UIImage imageNamed:@"hsh_login_user"];
  76. self.accountTF.leftView = userImage;
  77. [self.view addSubview:self.accountTF];
  78. UIView *accountLine = [[UIView alloc]init];
  79. //??
  80. accountLine.frame = CGRectMake(0, 43.5, self.accountTF.frame.size.width, 0.5);
  81. accountLine.backgroundColor = [UIColor grayColor];
  82. self.accountLine = accountLine;
  83. [self.accountTF addSubview:accountLine];
  84. /**设置账户列表 */
  85. _userList = [UIButton buttonWithType:UIButtonTypeCustom];
  86. _userList.frame = CGRectMake(self.accountTF.frame.size.width-32, 12, 32, 20);
  87. [_userList setBackgroundImage:[UIImage imageNamed:@"hsh_login_drop-down"] forState:UIControlStateNormal];
  88. [_userList addTarget:self action:@selector(userListBtnClick:) forControlEvents:UIControlEventTouchUpInside];
  89. [self.accountTF addSubview:_userList];
  90. /**设置密码输入框 */
  91. self.passwordTF.frame = CGRectMake(20, HEIGHT/2, WIDTH-40, 44);
  92. self.passwordTF.placeholder = @"密码";
  93. self.passwordTF.tintColor = [UIColor blueColor];
  94. self.passwordTF.textColor = [UIColor blackColor];
  95. self.passwordTF.font = [UIFont systemFontOfSize:18];
  96. self.passwordTF.leftViewMode = UITextFieldViewModeAlways;
  97. // self.passwordTF.clearButtonMode = UITextFieldViewModeWhileEditing;
  98. self.passwordTF.secureTextEntry = YES;
  99. // self.passwordTF.clearsOnBeginEditing = YES;
  100. self.passwordTF.delegate = self;
  101. //设置左边视图
  102. UIImageView *passwordImage = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 20, 20)];
  103. passwordImage.contentMode = UIViewContentModeLeft;
  104. //??
  105. passwordImage.image = [UIImage imageNamed:@"hsh_login_password"];
  106. self.passwordTF.leftView = passwordImage;
  107. [self.view addSubview:self.passwordTF];
  108. UIView *passwordLine = [[UIView alloc]init];
  109. //??
  110. passwordLine.frame = CGRectMake(0, 43.5, self.passwordTF.frame.size.width, 0.5);
  111. passwordLine.backgroundColor = [UIColor grayColor];
  112. self.passwordLine = passwordLine;
  113. [self.passwordTF addSubview:passwordLine];
  114. /**设置重置密码button */
  115. self.resetPasswordBtn.frame = CGRectMake(self.passwordTF.frame.size.width-80, 0, 80, 44);
  116. [self.resetPasswordBtn setTitle:@"忘记密码" forState:UIControlStateNormal];
  117. [self.resetPasswordBtn setTitleColor:[UIColor colorWithRed:68/255.0 green:68/255.0 blue:68/255.0 alpha:1] forState:UIControlStateNormal];
  118. self.resetPasswordBtn.titleLabel.font = [UIFont systemFontOfSize:18];
  119. self.resetPasswordBtn.titleLabel.textAlignment = NSTextAlignmentRight;
  120. [self.resetPasswordBtn addTarget:self action:@selector(resetPasswordBtnClick:) forControlEvents:UIControlEventTouchUpInside];
  121. [self.passwordTF addSubview:self.resetPasswordBtn];
  122. /**设置记住密码button *///反选
  123. self.rememberBtn.frame = CGRectMake(20, HEIGHT/2+49, 20, 20);
  124. [self.rememberBtn setBackgroundImage:[UIImage imageNamed:@"hsh_login_checkbox"] forState:UIControlStateNormal];
  125. [self.rememberBtn addTarget:self action:@selector(selectBtnClick:) forControlEvents:UIControlEventTouchUpInside];
  126. [self.view addSubview:self.rememberBtn];
  127. UILabel *remberLabel = [[UILabel alloc]initWithFrame:CGRectMake(40, HEIGHT/2+44, 100, 30)];
  128. remberLabel.text = @"记住账户";
  129. remberLabel.textColor = [UIColor colorWithRed:68/255.0 green:68/255.0 blue:68/255.0 alpha:1];
  130. remberLabel.font = [UIFont systemFontOfSize:18];
  131. [self.view addSubview:remberLabel];
  132. /**设置注册Button */
  133. self.registButton .frame = CGRectMake(WIDTH-175, HEIGHT/2+44, 160, 30);
  134. //button富文本
  135. NSMutableAttributedString *attributedStr = [[NSMutableAttributedString alloc]initWithString:@"还没有账号?注册"];
  136. [attributedStr addAttribute:NSForegroundColorAttributeName value:[UIColor colorWithRed:205/255.0 green:205/255.0 blue:210/255.0 alpha:1] range:NSMakeRange(0, 6)];
  137. [attributedStr addAttribute:NSForegroundColorAttributeName value:[UIColor colorWithRed:66/255.0 green:66/255.0 blue:66/255.0 alpha:1] range:NSMakeRange(6, 2)];
  138. [self.registButton setAttributedTitle:attributedStr forState:UIControlStateNormal];
  139. self.registButton.titleLabel.textAlignment = NSTextAlignmentRight;
  140. [self.registButton setTitleColor:[UIColor colorWithRed:68/255.0 green:68/255.0 blue:68/255.0 alpha:1] forState:UIControlStateNormal];
  141. [self.registButton addTarget:self action:@selector(registeBtnClick:) forControlEvents:UIControlEventTouchUpInside];
  142. self.registButton.titleLabel.font = [UIFont systemFontOfSize:18];
  143. [self.view addSubview:self.registButton];
  144. /**设置登录Button */
  145. self.loginButton.frame = CGRectMake(20, HEIGHT*0.75, WIDTH-40, 44);
  146. [self.loginButton setBackgroundImage:[UIImage imageNamed:@"blue"] forState:UIControlStateNormal];
  147. [self.loginButton setTitle:@"登录" forState:UIControlStateNormal];
  148. [self.loginButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
  149. self.loginButton.titleLabel.font = [UIFont systemFontOfSize:18];
  150. self.loginButton.titleLabel.textAlignment = NSTextAlignmentCenter;
  151. // self.loginButton.clipsToBounds = YES;
  152. [self.loginButton addTarget:self action:@selector(loginButtonClick:) forControlEvents:UIControlEventTouchUpInside];
  153. [self.view addSubview:self.loginButton];
  154. /** 布局 */
  155. [self make_layout];
  156. }
  157. -(void)make_layout{
  158. // [self.logoImageView mas_makeConstraints:^(MASConstraintMaker *make) {
  159. // make.width.mas_equalTo (120.f);
  160. // make.height.mas_equalTo(120.f);
  161. // make.topMargin.mas_equalTo(100.f);
  162. // }];
  163. }
  164. #pragma mark - Event response
  165. -(void)userListBtnClick:(UIButton *)listBtn{
  166. NSLog(@"用户列表");
  167. }
  168. //反选
  169. -(void)selectBtnClick:(UIButton *)select{
  170. // _selected = !_selected;
  171. // if (_selected) {
  172. // [self.rememberBtn setImage:[UIImage imageNamed:@"hsh_login_checkbox_transformation"] forState:UIControlStateNormal];
  173. // //保存用户名 密码
  174. // [[NSUserDefaults standardUserDefaults]setObject:self.accountTF.text forKey:@"phone"];
  175. // [[NSUserDefaults standardUserDefaults]setObject:self.passwordTF.text forKey:@"password"];
  176. //
  177. // }else{
  178. // [self.rememberBtn setImage:[UIImage imageNamed:@"hsh_login_checkbox"] forState:UIControlStateNormal];
  179. // //不保存
  180. // }
  181. NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
  182. if ([defaults boolForKey:@"isRememberPsd"]) {
  183. [self.rememberBtn setBackgroundImage:[UIImage imageNamed:@"hsh_login_checkbox"] forState:UIControlStateNormal];
  184. [defaults setBool:false forKey:@"isRememberPsd"];
  185. }else{
  186. [self.rememberBtn setBackgroundImage:[UIImage imageNamed:@"hsh_login_checkbox_transformation"] forState:UIControlStateNormal];
  187. [defaults setBool:true forKey:@"isRememberPsd"];
  188. }
  189. [defaults synchronize];
  190. }
  191. -(void)resetPasswordBtnClick:(UIButton *)resetBtn{
  192. ResetPassword_VC *resetPassword = [[ResetPassword_VC alloc]init];
  193. [self.navigationController pushViewController:resetPassword animated:YES];
  194. }
  195. #pragma mark------用户名密码校验
  196. -(void)show{
  197. if (self.accountTF.text ==nil||self.accountTF.text.length<11||self.accountTF.text.length >11) {
  198. // [self.loginButton setEnabled:NO];
  199. // [self.registButton setEnabled:NO];
  200. ALERTSHOW(@"手机号输入有误");
  201. return;
  202. }
  203. if (self.passwordTF.text ==nil||self.passwordTF.text.length>8){
  204. // [self.loginButton setEnabled:NO];
  205. // [self.registButton setEnabled:NO];
  206. ALERTSHOW(@"密码输入有误");
  207. return;
  208. }
  209. }
  210. #pragma mark----获取手机标识
  211. //+(NSString *)identifier
  212. //{
  213. // NSString *key = @"com.app.keychain.uuid";
  214. // KeychainItemWrapper *keychainItem = [[KeychainItemWrapper alloc] initWithIdentifier:key accessGroup:nil];
  215. //
  216. // NSString *strUUID = [keychainItem objectForKey:(__bridge id)kSecValueData];
  217. //
  218. // if (strUUID.length <= 0) {
  219. // strUUID = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
  220. //
  221. // [keychainItem setObject:@"uuid" forKey:(__bridge id)kSecAttrAccount];
  222. // [keychainItem setObject:strUUID forKey:(__bridge id)kSecValueData];
  223. // }
  224. //
  225. // return strUUID;
  226. //}
  227. -(void)loginButtonClick:(UIButton *)loginBtn{
  228. [self show];
  229. NSString *identifierStr = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
  230. NSLog(@"手机标识%@",identifierStr);
  231. [DataSourceManager setLoginWithUrlPhone:self.accountTF.text Password:self.passwordTF.text ClientId:identifierStr AppType:@"3" completionBlock:^(NSDictionary *dic) {
  232. //// //保存用户名 密码
  233. if ([[NSUserDefaults standardUserDefaults] boolForKey:@"isRememberPsd"]) {
  234. //保存用户名 密码
  235. [[NSUserDefaults standardUserDefaults]setObject:self.accountTF.text forKey:@"phone"];
  236. [[NSUserDefaults standardUserDefaults]setObject:self.passwordTF.text forKey:@"password"];
  237. }
  238. [self goMain];
  239. }];
  240. }
  241. -(void)registeBtnClick:(UIButton *)registBtn{
  242. UserRegister_VC *registeVC = [[UserRegister_VC alloc]init];
  243. // registeVC.navigationController.navigationBarHidden = YES;
  244. [self.navigationController pushViewController:registeVC animated:YES];
  245. }
  246. #pragma mark - Delegate methods
  247. - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
  248. return YES;
  249. }
  250. //避免键盘遮挡,登录表单或按钮上移代码
  251. - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
  252. NSTimeInterval animationDuration = 0.30f;
  253. [UIView beginAnimations:@ "ResizeForKeyboard" context:nil];
  254. [UIView setAnimationDuration:animationDuration];
  255. //将视图的Y坐标向上移动,以使下面腾出地方用于软键盘的显示
  256. self.view.frame = CGRectMake(0.0f, -50.0f, self.view.frame.size.width, self.view.frame.size.height); //64-216
  257. [UIView commitAnimations];
  258. return YES;
  259. }
  260. -(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
  261. NSTimeInterval animationDuration = 0.30f;
  262. [UIView beginAnimations:@ "ResizeForKeyboard" context:nil];
  263. [UIView setAnimationDuration:animationDuration];
  264. //恢复屏幕
  265. self.view.frame = CGRectMake(0.0f, 0.0f, self.view.frame.size.width, self.view.frame.size.height); //64-216
  266. [UIView commitAnimations];
  267. [[UIApplication sharedApplication].keyWindow endEditing:YES];
  268. }
  269. - (BOOL)textFieldShouldReturn:(UITextField *)textField {
  270. [textField resignFirstResponder];
  271. return YES;
  272. }
  273. -(void)goMain{
  274. //初始化tabBar
  275. UITabBarController *tabBar = [[UITabBarController alloc ]init];
  276. ViewController *firstVC = [[ViewController alloc]init];
  277. DeveceList_VC *deveceVC = [[DeveceList_VC alloc]init];
  278. Message_VC *messageVC = [[Message_VC alloc]init];
  279. Person_VC *personVC = [[Person_VC alloc]init];
  280. NSMutableArray *vcArray = [NSMutableArray arrayWithObjects:firstVC,deveceVC,messageVC,personVC, nil];
  281. NSArray *titles = @[@"首页",@"设备 ",@"消息",@"我的"];
  282. NSArray *images = @[@"hsh_nav_home",@"hsh_nav_equipment",@"hsh_nav_news",@"hsh_nav_user"];
  283. NSArray *selectImages = @[@"hsh_nav_home_trensform",@"hsh_nav_equipment_trensform",@"hsh_nav_news_trensform",@"hsh_nav_user_trensform"];
  284. NSMutableArray *vcArr = [NSMutableArray array];
  285. for (int i =0; i<4; i++) {
  286. UIViewController *vc = vcArray[i];
  287. UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:vc];
  288. vc.tabBarItem.title = titles[i];
  289. NSArray *titleColors = @[[UIColor colorWithRed:255/255.0 green:74/255.0 blue:154/255.0 alpha:1],[UIColor colorWithRed:66/255.0 green:234/255.0 blue:211/255.0 alpha:1],[UIColor colorWithRed:255/255.0 green:122/255.0 blue:70/255.0 alpha:1],[UIColor colorWithRed:119/255.0 green:84/255.0 blue:228/255.0 alpha:1]];
  290. [vc.tabBarItem setTitleTextAttributes:@{NSForegroundColorAttributeName:titleColors[i]} forState:UIControlStateSelected];
  291. vc.tabBarItem.image = [[UIImage imageNamed:images[i]]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
  292. vc.tabBarItem.selectedImage = [[UIImage imageNamed:selectImages[i]]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
  293. [vcArr addObject:nav];
  294. }
  295. tabBar.viewControllers = vcArr;
  296. [UIApplication sharedApplication].keyWindow.rootViewController = tabBar;
  297. }
  298. //在页面消失的时候就让navigationbar还原样式
  299. -(void)viewDidDisappear:(BOOL)animated{
  300. self.navigationController.navigationBarHidden =NO;
  301. }
  302. @end