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

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. 实践 Neutron 前的两个准备工作 - 每天5分钟玩转 OpenStack(78)

    上一节配置了 linux-bridge mechanism driver,本节再做两个准备工作: 1. 检视初始的网络状态.2. 了解 linux bridge 环境中的各种网络设备. 初始网络状态 ...

  2. .Net中DataAdapter批量插入和更新数据总结

    前言 前段时间一直在忙着项目上线,在做项目的同时遇到了一些之前不曾碰到的问题,因为没有经验,只能从网上找一些相关的解决方案,但是网上提供的资料实在是太杂,有的根本不能用,耗时又耗力. 我希望把我这段时 ...

  3. Cesium原理篇:6 Render模块(6: Instance实例化)

    最近研究Cesium的实例化,尽管该技术需要在WebGL2.0,也就是OpenGL ES3.0才支持.调试源码的时候眼前一亮,发现VAO和glDrawBuffers都不是WebGL1.0的标准函数,都 ...

  4. 数据库设计(1/9):数据元(Data Elements)

    对于设计和创建数据库完全是个新手?没关系,Joe Celko,世界上读者数量最多的SQL作者之一,会告诉你这些基础.和往常一样,即使是最专业的数据库老手,也会给他们带来惊喜.Joe是DMBS杂志是多年 ...

  5. Microsoft Visual Studio 2008 未能正确加载包“Visual Web Developer HTML Source Editor Package” | “Visual Studio HTM Editor Package”

    在安装Microsoft Visual Studio 2008 后,如果Visual Studio 2008的语言版本与系统不一致时,比如:在Windows 7 English System 安装Vi ...

  6. CSS基础转载

    css基本知识框架:(一:基本知识缩影.二基本知识框架图) 1.css样式表的基本概念 2.样式表基本类型-----1.内嵌样式 2.内联样式3.链入外部样式表4.导入外部?式 3.样式表配置方法 4 ...

  7. 在DirectShow中支持DXVA 2.0(Supporting DXVA 2.0 in DirectShow)

    这几天在做dxva2硬件加速,找不到什么资料,翻译了一下微软的两篇相关文档.并准备记录一下用ffmpeg实现dxva2,将在第三篇写到.这是第二篇.,英文原址:https://msdn.microso ...

  8. Java--FutureTask原理与使用(FutureTask可以被Thread执行,可以被线程池submit方法执行,并且可以监控线程与获取返回值)

    package com; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; i ...

  9. PHP程序员的技术成长规划

    按照了解的很多PHP/LNMP程序员的发展轨迹,结合个人经验体会,抽象出很多程序员对未来的迷漫,特别对技术学习的盲目和慌乱,简单梳理了这个每个阶段PHP程序员的技术要求,来帮助很多PHP程序做对照设定 ...

  10. 学习笔记:Asp.Net MVC更新部分页面

    Asp.Net MVC 更新部分页面 设想我们有一篇文章下面的提交评论时如何只刷新评论内容部分, 方法一,利用ajax通过js代码实现. 方法二,利用Ajax.BeginForm()+部分视图实现. ...