IOS - 登录界面
来源:互联网 发布:软件人才缺口多少 编辑:程序博客网 时间:2024/05/24 06:22
登录界面:
手机号+密码+验证码 -> 登录
忘记密码, 快速注册
代码
//// 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
效果
2 0
- 【IOS】登录界面
- ios开发登录界面
- IOS - 登录界面
- IOS开发之登录界面
- ios UI注册登录界面
- ios UI注册登录界面
- iOS登录界面和注册界面
- iOS登录界面和注册界面
- iOS登录注册登录界面(UITextField)
- iOS登录界面和登录验证
- IOS制作一个漂亮的登录界面
- iOS 实现登录界面的UITextField
- iOS 登录与注册的界面跳转
- [iOS开发项目-2] 用户登录界面
- IOS 会动的登录界面
- 两个IOS的登录界面小代码
- IOS开发之登录界面的开发
- IOS 实例一 登录注册界面搭建
- instanceof, isinstance,isAssignableFrom的区别
- POJ1915 双向广度优先搜索
- 改变Activity在当前任务堆栈中的顺序
- GRE写作必备句型
- HDU 2578 Dating with girls(1)
- IOS - 登录界面
- UVALive 6510 Stickers
- Python学习笔记-生成器
- JavaScript/jQuery WebIM 及时聊天通信工具 本地客户端
- PendingIntent
- 2012年5月SAT香港真题解析
- UINavigationController与UITabbarController的样式
- Struts2的ValueStack及EL表达式中取ValueStack的内幕
- Android 代码混淆