ios登录界面的实现源码

本文主要是实现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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值