您的位置:首页 > 移动开发 > IOS开发

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


效果



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Mystra IOS 登录界面