本文主要是实现ios中登录界面的简单实现,其中登录控制器类LoginViewController继承自UIViewController,并实现其中的viewDidLoad、viewWillLayoutSubviews和onClickLogin的方法,界面布局目前由OC代码进行实现。(转自云书)
一、视图控制器的切换
当前界面中采用 popViewControllerAnimated 的方法进行跳转退出,采用 pushViewController 的方法进行普通界面的跳转功能。
//初始化
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:[Controller new]];
[self.navigationController pushViewController:vc animated:YES];
实现如下:
[self.navigationController popViewControllerAnimated:YES]; // 退出当前界面
和
[self.navigationController pushViewController:controller animated:YES]; // 普通界面跳转
二、登录源码如下
1、LoginViewController.h文件
#import <UIKit/UIKit.h>
#import "UIViewController.h"
NS_ASSUME_NONNULL_BEGIN
@interface LoginViewController : UIViewController
@end
NS_ASSUME_NONNULL_END
2、LoginViewController.m文件
#import "LoginViewController.h"
@interface LoginViewController () {
}
// 图片资源
@property (nonatomic, strong) UIImage *img_bg;
@property (nonatomic, strong) UIImage *img_top;
@property (nonatomic, strong) UIImage *img_login_head_bg;
@property (nonatomic, strong) UIImage *img_input_bg_n;
@property (nonatomic, strong) UIImage *img_input_bg_p;
// 组件资源
@property (nonatomic, strong) UIImageView *head;
@property (nonatomic, strong) UILabel *userHint;
@property (nonatomic, strong) UITextField *user;
@property (nonatomic, strong) UILabel *pwdHint;
@property (nonatomic, strong) UITextField *pwd;
@property (nonatomic, strong) UIButton *report; // 登录按钮
@end
@implementation LoginViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.title = @"登 录";
self.view.backgroundColor = [UIColor whiteColor];
CGFloat frame_height = self.view.frame.size.height;
CGFloat nav_height = self.navigationController.navigationBar.frame.size.height;
CGFloat tab_height = self.tabBarController.tabBar.frame.size.height;
CGFloat content_height = frame_height - nav_height - tab_height - 20; // 20=标题栏的高度
// 加载图片资源
self.img_bg = [UIImage imageNamed:@"tab_bg"];
self.img_input_bg_n = [UIImage imageNamed:@"appoint_input_bg_n"];
self.img_input_bg_p = [UIImage imageNamed:@"appoint_input_bg_p"];
self.img_login_head_bg = [UIImage imageNamed:@"login_head_bg"];
// 设置背景图片
UIImageView *iv_bg = [[UIImageView alloc] initWithFrame:self.view.bounds];
iv_bg.image = self.img_bg;
[self.view insertSubview:iv_bg atIndex:0];
_head = [[UIImageView alloc] init];
[_head setImage:_img_login_head_bg]; // 设置背景头
_userHint = [[UILabel alloc] init];
_userHint.text = @"用户名:";
_userHint.numberOfLines = 0;
_userHint.font = [UIFont systemFontOfSize:getFontSize(fontNormal)];
_userHint.textColor = [UIColor grayColor];
_userHint.textAlignment = NSTextAlignmentCenter; // 居中
// 用户名
_user = [[TextField alloc] init];
_user.placeholder = @" 请输入您的姓名";
_user.font = [UIFont systemFontOfSize:getFontSizeDefault];
_user.textColor = [UIColor grayColor];
_user.leftViewMode=UITextFieldViewModeAlways; //此处用来设置leftview现实时机
// 设置背景图片
_user.background = self.img_input_bg_n;
// 设置边距
[_user setValue:[NSNumber numberWithInt:0] forKey:@"paddingTop"];
[_user setValue:[NSNumber numberWithInt:8] forKey:@"paddingLeft"];
[_user setValue:[NSNumber numberWithInt:0] forKey:@"paddingBottom"];
[_user setValue:[NSNumber numberWithInt:8] forKey:@"paddingRight"];
//_tf_user.keyboardType = UIKeyboardTypeDefault; //设置键盘的样式
_user.autocapitalizationType = UITextAutocapitalizationTypeNone; //首字母是否大写
_pwdHint = [[UILabel alloc] init];
_pwdHint.text = @"密 码:";
_pwdHint.numberOfLines = 0;
_pwdHint.font = [UIFont systemFontOfSize:getFontSize(fontNormal)];
_pwdHint.textColor = [UIColor grayColor];
_pwdHint.textAlignment = NSTextAlignmentCenter; // 居中
//_pwdHint.backgroundColor = [UIColor greenColor];
// 用户名
_pwd = [[TextField alloc] init];
_pwd.placeholder = @" 请输入您的密码";
_pwd.font = [UIFont systemFontOfSize:getFontSizeDefault];
_pwd.textColor = [UIColor grayColor];
_pwd.leftViewMode=UITextFieldViewModeAlways; //此处用来设置leftview现实时机
// 设置背景图片
_pwd.background = self.img_input_bg_n;
// 设置边距
[_pwd setValue:[NSNumber numberWithInt:0] forKey:@"paddingTop"];
[_pwd setValue:[NSNumber numberWithInt:8] forKey:@"paddingLeft"];
[_pwd setValue:[NSNumber numberWithInt:0] forKey:@"paddingBottom"];
[_pwd setValue:[NSNumber numberWithInt:8] forKey:@"paddingRight"];
//_tf_user.keyboardType = UIKeyboardTypeDefault; //设置键盘的样式
_pwd.autocapitalizationType = UITextAutocapitalizationTypeNone; //首字母是否大写
_report= [[UIButton alloc] init];
[_report setTitle:@"登 录" forState:UIControlStateNormal];
[_report setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; //设置文字颜色
_report.titleLabel.font = [UIFont systemFontOfSize:fontMedium];
_report.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;// 居中
//_report.backgroundColor = [UIColor greenColor];
[_report sizeToFit]; // 按钮自动适应按钮的内容的大小
[_report setBackgroundImage:[UIImage imageNamed:@"login_bg_n"] forState:UIControlStateNormal]; //设置正常状态下的图片
[_report setBackgroundImage:[UIImage imageNamed:@"login_bg_p"] forState:UIControlStateHighlighted]; //设置高亮状态下的图片
[_report addTarget:self action:@selector(onClickLogin:) forControlEvents:UIControlEventTouchUpInside]; //设置监听
// 添加组件
[self.view addSubview:_head];
[self.view addSubview:_userHint];
[self.view addSubview:_user];
[self.view addSubview:_pwdHint];
[self.view addSubview:_pwd];
[self.view addSubview:_report];
}
#pragma mark - UIViewController布局子控件的过程
- (void)viewWillLayoutSubviews {
[super viewWillLayoutSubviews];
CGRect bounds = self.view.bounds;
CGRect headRect = CGRectMake(0, 0, screenWidth, 150 * screenScaleY);
headRect.origin.x = 0;
headRect.origin.y = 0;
_head.frame = headRect;
CGRect userHintRect = CGRectMake(0, 0, 80, 40);
userHintRect.origin.x = 0;
userHintRect.origin.y = headRect.size.height + userHintRect.size.height;
_userHint.frame = userHintRect;
CGRect userFrame = CGRectMake(0, 0, screenWidth - userHintRect.size.width*2, 40);
userFrame.origin.x = userHintRect.size.width;
userFrame.origin.y = userHintRect.origin.y;
_user.frame = userFrame;
CGRect pwdHintRect = CGRectMake(0, 0, 80, 40);
pwdHintRect.origin.x = 0;
pwdHintRect.origin.y = userHintRect.origin.y + userHintRect.size.height + 10;
_pwdHint.frame = pwdHintRect;
CGRect pwdFrame = CGRectMake(0, 0, screenWidth - userHintRect.size.width*2, 40);
pwdFrame.origin.x = pwdHintRect.size.width;
pwdFrame.origin.y = userHintRect.origin.y + userHintRect.size.height + 10;
_pwd.frame = pwdFrame;
CGRect reportRect = CGRectMake(0, 0, screenWidth/2 + 100, 50);
reportRect.origin.x = (screenWidth - reportRect.size.width) / 2;
reportRect.origin.y = pwdFrame.origin.y + pwdFrame.size.height + 30;
_report.frame = reportRect;
}
/** 点击登录按钮 */
- (IBAction)onClickLogin:(id)sender {
ZZLog(@"___登录");
NSString *userStr = _user.text;
if (userStr.length < 1) {
[self showError:@"用户名输入为空,请检查!"];
return;
}
NSString *pwdStr = _pwd.text;
if (pwdStr.length < 1) {
[self showError:@"密码输入为空,请检查!"];
return;
}
[MBProgressHUD showHUDAddedTo:self.view animated:YES];
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, 0.5 * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
// Do something...
[MBProgressHUD hideHUDForView:self.view animated:YES];
});
NSString *req = [NSString stringWithFormat:@"%@getList1", ZZURL];
[[Http instance] GET:req parameters:nil success:^(NSURLSessionDataTask *task, id res) {
NSNumber *codeN = [res objectForKey:@"code"]; // 状态码
NSInteger code = [codeN intValue];
ZZLog(@"___code=%ld", code);
if (code == 0) {
ZZLog(@"___登录成功");
ZZLog(@"___登录成功");
[ToastUtil show:@"恭喜,登录成功"];
[self.navigationController popViewControllerAnimated:YES]; // 退出当前界面
}
} failure:^(NSURLSessionDataTask *task, NSError *error) {
NSLog(@"___error=%@", error); // 这里打印错误信息
}];
}
@end