IOS - 登录界面
2015-07-20 14:13
537 查看
登录界面:
手机号+密码+验证码 -> 登录
忘记密码, 快速注册
代码
效果
手机号+密码+验证码 -> 登录
忘记密码, 快速注册
代码
// // UserLoginViewController.h // SymptomChecker // // Created by wang on 2015-7-20. // #import "UserAccountBaseViewController.h" @interface UserLoginViewController : UserAccountBaseViewController @property (nonatomic, NI_STRONG) User* currentUser; @end
// // UserLoginViewController.m // SymptomChecker // // Created by wang on 2015-7-20. // #import "UserLoginViewController.h" #import "UserRegisterViewController.h" #import "UserLoginViewController.h" #import "ThirdpartyLoginManager.h" #import "ThirdpartyLoginView.h" #import "ForgetPasswordViewController.h" #define kViewRadio viewWidth()/320 @interface UserLoginViewController () <ThirdpartyLoginViewDelegate> @end @implementation UserLoginViewController{ AccountTextInputElement* _phoneNo; // 手机号 AccountTextInputElement* _password; // 密码 AccountTextInputElement* _code; // 验证码 NINetworkImageView* _codeImage; // 验证图片 NSString* _source; } - (id) initWithNavigatorURL:(NSURL *)URL query:(NSDictionary *)query { self = [super initWithNavigatorURL:URL query:query]; if (self) { self.title = @"登录"; _source = query[@"source"]; self.flurryTitle = @"login"; } // 刷新验证码 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(msgCodeChanged) name:kMsgCodeRefresh object:nil]; return self; } - (void) dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; } - (void)viewDidLoad { [super viewDidLoad]; [self setupNaviBar]; // 设置NaviBar // Logo CGRect logoRect = CGRectMake(12*kViewRadio, 20*kViewRadio, viewWidth()-24*kViewRadio, 100*kViewRadio); UIImageView *logoView=[[UIImageView alloc] initWithFrame:logoRect]; [logoView setImage:[UIImage imageNamed:@"mat_logo_login.png"]]; [logoView setContentMode:UIViewContentModeScaleAspectFit]; [self.CYScrollView addSubview:logoView]; // 组合输入 UIView *formView = [self formAreaWithFormElements:[self getFormElements]]; [self.CYScrollView addSubview:formView]; CGRect codeRect = CGRectMake(formView.left+204*kViewRadio, formView.top+104*kViewRadio, 80*kViewRadio, 45*kViewRadio); // 验证码 _codeImage = [[NINetworkImageView alloc] initWithFrame:codeRect]; [_codeImage setDefaultImage:[CYResource load:@"icon_empty_content"]]; [_codeImage setContentMode: UIViewContentModeScaleAspectFit]; [self.CYScrollView addSubview: _codeImage]; // 登录按钮 CGRect submitRect = CGRectMake(16*kViewRadio, formView.bottom + 16*kViewRadio, viewWidth() - 32*kViewRadio, 44*kViewRadio); FilledColorButton *submitBtn = [[FilledColorButton alloc] initWithFrame:submitRect color:RGBCOLOR_HEX(0x39d167) highlightedColor:RGBCOLOR_HEX(0x27b953) textColor:[UIColor whiteColor] title:@"登录" fontSize:16*kViewRadio isBold:YES]; [submitBtn addTarget:self action:@selector(onSubmitButtonClicked:) forControlEvents:UIControlEventTouchUpInside]; [self.CYScrollView addSubview:submitBtn]; CGRect forgetRect = CGRectMake(0, submitBtn.bottom+32*kViewRadio, viewWidth(), 20*kViewRadio); // 忘记密码 UIButton *forgetBtn = [[UIButton alloc] initWithFrame:forgetRect]; [forgetBtn setTitle:@"忘记密码" forState:UIControlStateNormal]; [forgetBtn setTitleColor:RGBCOLOR_HEX(0x666666) forState:UIControlStateNormal]; [forgetBtn.titleLabel setFont:[UIFont systemFontOfSize:12*kViewRadio]]; [forgetBtn setCenterX:self.view.width/2]; [forgetBtn setBackgroundColor:[UIColor clearColor]]; [forgetBtn addTarget:self action:@selector(onForgetBtnClicked) forControlEvents:UIControlEventTouchUpInside]; [self.CYScrollView addSubview:forgetBtn]; CGRect promptRect = CGRectMake(0, forgetBtn.bottom+32*kViewRadio, viewWidth(), 20*kViewRadio); // 提示信息 UILabel *promptLabel = [[UILabel alloc] initWithFrame:promptRect]; [promptLabel setText:@"技术支持来自XX移动健康"]; [promptLabel setTextColor:[UIColor blackColor]]; [promptLabel setTextAlignment:NSTextAlignmentCenter]; [promptLabel setFont:[UIFont systemFontOfSize: 10*kViewRadio]]; [self.CYScrollView addSubview:promptLabel]; [self.CYScrollView setContentSize:self.view.bounds.size]; } // 快速注册 - (void)setupNaviBar { CGRect regRect = CGRectMake(0, 0, 80*kViewRadio, 40*kViewRadio); NaviButton* regBtn = [[NaviButton alloc] initWithFrame:regRect]; [regBtn setTitle:@"快速注册" forState:UIControlStateNormal]; [regBtn setTitleColor:RGBCOLOR_HEX(0xffffff) forState:UIControlStateNormal]; [regBtn addTarget: self action: @selector(onRegisterBtnClicked) forControlEvents: UIControlEventTouchUpInside]; [self setRightNavigationButton: regBtn]; } // // 点击注册"按钮" // - (void) onRegisterBtnClicked { UserRegisterViewController* controller = [[UserRegisterViewController alloc] initWithNavigatorURL:nil query:nil]; // controller.dismissBlock = self.dismissBlock; [self.navigationController pushViewController: controller animated: NO]; } // 重载 - (UIView *)formAreaWithFormElements:(NSArray *)formElements { // 设置UITableView self.tableView.backgroundColor = [UIColor clearColor]; self.tableView.tableFooterView = nil; self.tableView.tableHeaderView = nil; self.tableView.backgroundView = nil; self.tableView.rowHeight = 50*kViewRadio; self.tableView.frame = CGRectMake(0,1,viewWidth(),formElements.count*50*kViewRadio); self.tableView.autoresizingMask = UIViewAutoresizingNone; self.tableView.bounces = NO; self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone; NITableViewModel* model = [[NITableViewModel alloc] initWithSectionedArray:formElements delegate:self.cellFactory]; self.tableViewModel = model; CGFloat inputAreaHeight = formElements.count*50*kViewRadio+ 1; CGRect inputRect = CGRectMake(16*kViewRadio, 140*kViewRadio, viewWidth()-32*kViewRadio, inputAreaHeight); // 输入框border UIView *inputArea = [[UIView alloc] initWithFrame:inputRect]; inputArea.clipsToBounds = YES; inputArea.layer.cornerRadius = 3; inputArea.layer.borderWidth = 0.5; inputArea.layer.borderColor = RGBCOLOR_HEX(0xb6b6b6).CGColor; [inputArea addSubview:self.tableView]; return inputArea; } // 输入组合 - (NSArray*) getFormElements { // 手机号 _phoneNo = [AccountTextInputElement textInputElementWithID:0 placeholderText:@"手机号" value:nil]; _phoneNo.style = kUserCenterItemTop; // 密码 _password = [AccountTextInputElement passwordInputElementWithID:0 placeholderText:@"密码" value: nil]; _password.style = kUserCenterItemMiddle; _password.delegate = self; // 验证码 _code = [AccountTextInputElement textInputElementWithID:0 placeholderText:@"验证码" value:nil]; _code.style = kUserCenterItemBottom; return @[_phoneNo, _password, _code]; } // 忘记密码 - (void) onForgetBtnClicked { NIDPRINTMETHODNAME(); ForgetPasswordViewController* controller = [[ForgetPasswordViewController alloc] initWithNavigatorURL:Nil query:nil]; [self.navigationController pushViewController: controller animated:YES]; } // 登录按钮事件 - (void) onSubmitButtonClicked: (UIButton*) button { /** * 点击登录时 * 首先判断用户是否已经自动登录,如果已经自动登录成功,则直接dismis登录界面 * 如果没有登录,则进行登录的逻辑 */ if ([User hasLoggedIn]) { [SVProgressHUD showSuccessWithStatus:@"账号已登录" duration:1.2]; [self dismissController]; return; } _currentUser = [User currentUser]; [_currentUser setMatMsgCode: _code.value]; if (_phoneNo.value.length == 0) { [SVProgressHUD showErrorWithStatus: @"请输入您的手机号"]; } else if (_password.value.length == 0) { [SVProgressHUD showErrorWithStatus: @"请输入密码"]; } else { // 登录调用部分 [self.view endEditing:YES]; [[ThirdpartyLoginManager sharedInstance] loginToServerWithUsername:ENSURE_NOT_NULL(_phoneNo.value) password:ENSURE_NOT_NULL(_password.value) method:kSNSLoginMethodOther delegate:self]; } [ChunyuClick from:self.flurryTitle to:@"login"]; } // 验证码 - (void) msgCodeChanged { _currentUser = [User currentUser]; [_currentUser loadFromFile]; [_codeImage setPathToNetworkImage: [_currentUser matMsgCodeUrl]]; } #pragma mark - third party login view delegate // 未使用 - (void)loginWithMethod:(SNSLoginMethod)method { [[ThirdpartyLoginManager sharedInstance] loginWithMethod:method delegate:self]; } @end
效果
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- js判断客户端是iOS还是Android等移动终端的方法
- IOS开发环境windows化攻略
- .net平台推送ios消息的实现方法
- 探讨Android与iOS,我们将何去何从?
- Android、iOS和Windows Phone中的推送技术详解
- IOS 改变键盘颜色代码
- Android和IOS的浏览器中检测是否安装某个客户端的方法
- javascript实现阻止iOS APP中的链接打开Safari浏览器
- iOS开发之路--微博OAuth授权_取得用户授权的accessToken
- ios通过按钮点击异步加载图片
- ios中图像进行压缩方法汇总
- IOS检测指定路径的文件是否存在
- iOS、Mac OS X系统中编程实现汉字转拼音的方法(超级简单)