这个登录页面包含了自适应屏幕的大小,数字用户登录键盘是数字键盘、隐藏键盘、隐藏密码等等。

ViewController.h


#import <UIKit/UIKit.h>
#import "UIViewExt.h"
@interface ViewController : UIViewController<UITextFieldDelegate>
/**
* 背景图片
*/
@property(strong,nonatomic) UIImageView *Imagebackgroud;
/**
* 用户名输入框
*/
@property(strong,nonatomic) UITextField *NameTextfild;
/**
* 密码输入框
*/
@property(strong,nonatomic) UITextField *PasswordTextfild;
/**
* 登录按钮
*/
@property(strong,nonatomic) UIButton *LoginButton;
/**
* 注册按钮
*/
@property(strong,nonatomic) UIButton *RegistrationButton; @end

ViewController.m


#import "ViewController.h"
#define WIDTH self.view.width
#define HEIGHT self.view.height @interface ViewController () @end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad];
[self setBackgroudImage];
[self setLoginImage];
[self setTextFiled];
[self setButton];
}
#pragma Mark - 设置背景图的方法
-(void)setBackgroudImage
{
self.Imagebackgroud=[[UIImageView alloc] initWithFrame:self.view.frame];
[self.Imagebackgroud setImage:[UIImage imageNamed:@"beijing"]];
[self.view addSubview:self.Imagebackgroud];
} #pragma Mark - 设置输入框
-(void)setTextFiled
{
// 用户名输入框设置
self.NameTextfild=[[UITextField alloc] initWithFrame:CGRectMake(WIDTH *0.1, HEIGHT *0.2, WIDTH*0.8, HEIGHT*0.05)];
self.NameTextfild.backgroundColor=[UIColor clearColor];
self.NameTextfild.placeholder=@"请输入手机号";
// 设置输入键盘为数字键盘
self.NameTextfild.keyboardType=UIKeyboardTypeNumberPad;
// 设置输入框内的图标 默认为不显示
self.NameTextfild.leftView=[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"phoneIcon"]];
self.NameTextfild.leftViewMode=UITextFieldViewModeAlways;
[self.view addSubview:self.NameTextfild];
// 设置用户名输入框下的线
UIView *Nameview=[[UIView alloc]initWithFrame:CGRectMake(WIDTH *0.1, HEIGHT *0.2+HEIGHT*0.05,WIDTH*0.8, )];
Nameview.backgroundColor=[UIColor whiteColor];
[self.view addSubview:Nameview]; // 密码输入框设置
self.PasswordTextfild=[[UITextField alloc] initWithFrame:CGRectMake(WIDTH *0.1,HEIGHT*0.2+HEIGHT*0.06, WIDTH*0.8, HEIGHT*0.05)];
self.PasswordTextfild.backgroundColor=[UIColor clearColor];
self.PasswordTextfild.placeholder=@"请输入密码";
// 设置输入密码保护(隐藏密码)
self.PasswordTextfild.secureTextEntry=YES;
// 设置单击return隐藏键盘需要代理
self.PasswordTextfild.delegate=self;
// 设置输入框内的图标 默认为不显示
self.PasswordTextfild.leftView=[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"passwordIcon"]];
self.PasswordTextfild.leftViewMode=UITextFieldViewModeAlways;
[self.view addSubview:self.PasswordTextfild];
// 设置密码输入框下的线
UIView *Passwordview=[[UIView alloc]initWithFrame:CGRectMake(WIDTH *0.1,HEIGHT*0.31,WIDTH*0.8, )];
Passwordview.backgroundColor=[UIColor whiteColor];
[self.view addSubview:Passwordview];
} #pragma Mark -按钮设置方法
-(void)setButton
{
// 登录按钮设置
self.LoginButton=[[UIButton alloc] initWithFrame:CGRectMake(WIDTH *0.1, HEIGHT*0.35, WIDTH *0.8, HEIGHT * 0.08)];
[self.LoginButton setBackgroundImage:[UIImage imageNamed:@"loginButton"] forState:UIControlStateNormal];
[self.LoginButton setTitle:@"登录" forState:UIControlStateNormal];
[self.view addSubview:self.LoginButton]; // 注册按钮设置
self.RegistrationButton=[[UIButton alloc] initWithFrame:CGRectMake(WIDTH *0.1, HEIGHT * 0.45, WIDTH *0.8, HEIGHT * 0.08)];
[self.RegistrationButton setBackgroundImage:[UIImage imageNamed:@"rigisterButton"] forState:UIControlStateNormal];
[self.RegistrationButton setTitle:@"注册" forState:UIControlStateNormal];
[self.RegistrationButton setTitleColor:[UIColor colorWithRed:0.115 green:0.749 blue:0.769 alpha:1.000] forState:UIControlStateNormal];
[self.view addSubview:self.RegistrationButton]; } #pragma Mark - logo图片设置
-(void)setLoginImage
{
// 欢迎图片设置
UIImageView *welcomeView=[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"welcome"]];
welcomeView.frame=CGRectMake(WIDTH *0.1, HEIGHT*0.05, WIDTH *0.8, HEIGHT *0.08);
[self.view addSubview:welcomeView]; // logo图片设置
UIImageView *LogoView=[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"logo"]];
LogoView.frame=CGRectMake(WIDTH*0.4, HEIGHT-HEIGHT*0.08, WIDTH*0.2, HEIGHT*0.03);
[self.view addSubview:LogoView]; }
#pragma Mark - 设置键盘的隐藏
/**
* 单击空白处隐藏键盘
*
* @param touches 空白处
* @param event 单击
*/
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
if ([self.NameTextfild isFirstResponder]||[self.PasswordTextfild isFirstResponder]) {
[self.NameTextfild resignFirstResponder];
[self.PasswordTextfild resignFirstResponder];
}
} /**
* 单击return隐藏键盘
*/
-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
[self.PasswordTextfild resignFirstResponder];
return YES;
}
...
@end

运行效果图:

2016-04-06 22:22:01

iOS--xuer(registration)的更多相关文章

  1. iOS开发(OC)中的命名规范

    开小差:最近发现自己有一个经验主义的毛病,不太容易接受新的知识,这对从事技术研发的人来说不太合理,需要改之. 正文:通过读写大量代码我有自己的一套编程思路和习惯,自认为自己的编码习惯还是不错的,代码结 ...

  2. XMPPFrameWork IOS 开发(六)聊天室

    原始地址:XMPPFrameWork IOS 开发(六)聊天室 聊天室 //初始化聊天室 XMPPJID *roomJID = [XMPPJID jidWithString:ROOM_JID]; xm ...

  3. XMPPFrameWork IOS 开发(一)xmpp简介

    原始地址:XMPPFrameWork IOS 开发(一) XMPP : The Extensible Messaging and Presence Protocol 中文全称: 可扩展通讯和表示协议 ...

  4. XMPPFrameWork IOS 开发(二)- xcode配置

    原始地址:XMPPFrameWork IOS 开发(二) 译文地址:   Getting started using XMPPFramework on iOS 介绍 ios上的XMPPFramewor ...

  5. 深度图像配准(Registration)原理

    机器视觉中,3D相机产生的深度图像(depth image)通常需要配准(registration),以生成配准深度图像(registed depth image).实际上配准的目的就是想让深度图和彩 ...

  6. XMPPFrameWork IOS 开发(四)消息和好友上下线

    原始地址:XMPPFrameWork IOS 开发(四) 消息 //收到消息 - (void)xmppStream:(XMPPStream *)sender didReceiveMessage:(XM ...

  7. XMPPFrameWork IOS 开发(三)登录

    原始地址:XMPPFrameWork IOS 开发(三) XMPP中常用对象们: XMPPStream:xmpp基础服务类 XMPPRoster:好友列表类 XMPPRosterCoreDataSto ...

  8. XE6移动开发环境搭建之IOS篇(7):在Mac OSX 10.8中安装XE6的PAServer(有图有真相)

    XE6移动开发环境搭建之IOS篇(7):在Mac OSX 10.8中安装XE6的PAServer(有图有真相) 2014-08-22 21:06 网上能找到的关于Delphi XE系列的移动开发环境的 ...

  9. XE6移动开发环境搭建之IOS篇(2):安装虚拟机(有图有真相)

    XE6移动开发环境搭建之IOS篇(2):安装虚拟机(有图有真相) 2014-08-15 22:04 网上能找到的关于Delphi XE系列的移动开发环境的相关文章甚少,本文尽量以详细的内容.傻瓜式的表 ...

  10. iOS逆向(五)-ipa包重签名

    为什么要重签名? 1.在没有源代码的情况下,你已经对某个应用进行了资源修改(比如修改了启动图或图标等).修改完成以后,如果想要让APP可以正常使用,该APP一定要重新签名然后压缩成IPA文件. 2.如 ...

随机推荐

  1. Web APi之认证(Authentication)两种实现方式后续【三】(十五)

    前言 之前一直在找工作中,过程也是令人着实的心塞,最后还是稳定了下来,博客也停止更新快一个月了,学如逆水行舟,不进则退,之前学的东西没怎么用,也忘记了一点,不过至少由于是切身研究,本质以及原理上的脉络 ...

  2. (翻译)Angular.js为什么如此火呢?

    在本文中让我们来逐步发掘angular为什么如此火: Angular.js 是一个MV*(Model-View-Whatever,不管是MVC或者MVVM,统归MDV(model Drive View ...

  3. 附录C 编译安装Hive

    如果需要直接安装Hive,可以跳过编译步骤,从Hive的官网下载编译好的安装包,下载地址为http://hive.apache.org/downloads.html . C.1  编译Hive C.1 ...

  4. ZOJ Problem Set - 1365 Mileage Bank

    题目不难,主要说下这道题目在输入终止上的问题: 题目要求当输入为0时一次case结束,当输入为#时整个输入全部结束,可以用如下格式解决 while(scanf("%s",str)! ...

  5. 小div布局之卡片堆叠(card-stacking)

    前端的页面布局和各种效果真是让人眼花缭乱,公司的设计师恨不得在一个网站上把前端的布局和样式效果都用一遍. 如何实现下面这种布局效果?我给这种布局效果起了个名字,叫做小div布局之卡片堆叠.然后我百度了 ...

  6. JS几种排序算法

    一.冒泡排序 var bubble = function(arr){ ;i<;i++){ ;j<-i;j++){ ]){ temp = arr[j]; arr[j] = arr[j+]; ...

  7. Angular依赖注入详解

    Angular算是将后端开发工程化引入前端的先驱之一,而Dependency injection依赖注入(后面简称为DI)又是Angular内部运作的核心功能,所以要深入理解Angular有必要先理解 ...

  8. .net提交HTML元素到后台,遇到Request报错 解决方案

    对于.NET MVC 项目来说,在Controller中对应的Action方法上打上标签: [ValidateInput(false)] 在MSDN上:HttpRequest 类使用输入验证标志来跟踪 ...

  9. react入门(1)

    这篇文章也不能算教程咯,就算是自己学习整理的笔记把. 关于react一些相关的简介.优势之类的,随便百度一下一大堆,我就不多说了,可以去官网(http://reactjs.cn/)看一下. 这片主要讲 ...

  10. Effective java笔记(九),并发

    66.同步访问共享的可变数据 JVM对不大于32位的基本类型的操作都是原子操作,所以读取一个非long或double类型的变量,可以保证返回的值是某个线程保存在该变量中的,但它并不能保证一个线程写入的 ...