UILTView经典知识点练习
AppDelegate
()<</span>UITextFieldDelegate>
AppDelegate
- (void)dealloc{
self.window
=
nil;
[super
dealloc];
*)application
didFinishLaunchingWithOptions:(NSDictionary
*)launchOptions
{
self.window
=
[[[UIWindow
alloc]
initWithFrame:[[UIScreen
mainScreen]
bounds]]autorelease];
UIView
*contenView =
[[UIView
alloc]initWithFrame:[UIScreen
mainScreen].bounds];
contenView.tag
=
300;
contenView.backgroundColor
=
[UIColor
brownColor];
[self.window
addSubview:contenView];
[contenView release];
//数据源:是用来提供数据
//label上的数据
NSArray
*texts
= @[@"用户名",@"密码",@"确认密码",@"手机号",@"邮箱"];
//textField上的数据
NSArray
*placegolds
= @[@"请输入用户名",@"请输入密码",@"请再次确认密码",@"请输入手机号",@"请输入邮箱"];
for循环布局:
for
(int
i
= 0;
i <</span> 5;
i ++) {
UILabel
*label =
[[UILabel
alloc]initWithFrame:CGRectMake(20,
40
+
50
*i,
60,
30)];
label.backgroundColor
=
[UIColor
greenColor];
label.text
=
texts[i];
label.layer.cornerRadius
=
10;//切圆角
label.layer.masksToBounds
=
YES;
label.tag
=
100
+
i;
label.font
=
[UIFont
boldSystemFontOfSize:15];
label.textAlignment
=
NSTextAlignmentCenter;//居中对齐
[contenView addSubview:label];
[label release];
UITextField
*field =
[[UITextField
alloc]initWithFrame:CGRectMake(100,
40
+
50
*
i, 200,
30)];
field.placeholder
= placegolds[i];//输入提示内容
field.borderStyle
=
UITextBorderStyleRoundedRect;
field.backgroundColor
=
[UIColor
cyanColor];
field.tag
=
200
+
i;
//添加代理
field.delegate
=self;
[contenView addSubview:field];
[field release];
if
(1
==
i || 2
== i)
{
field.secureTextEntry
=
YES;//加密框显示
}
if
(3
== i )
{
field.keyboardType
=
UIKeyboardTypeNumberPad;//显示数字键盘
}
}
//登录
UIButton
*loginBotton =
[UIButton
buttonWithType:UIButtonTypeSystem];
loginBotton.frame
=
CGRectMake(40,
300,
100,
30);
loginBotton.backgroundColor
=
[UIColor
yellowColor];
[loginBotton setTitle:@"登录"
forState:UIControlStateNormal];
[contenView addSubview:loginBotton];
//注册
UIButton
*signBotton =
[UIButton
buttonWithType:UIButtonTypeSystem];
signBotton.frame
=
CGRectMake(180,
300,
100,
30);
signBotton.backgroundColor
=
[UIColor
yellowColor];
[signBotton setTitle:@"注册"
forState:UIControlStateNormal];
[contenView addSubview:signBotton];
// Override
point for customization after application
launch.
self.window.backgroundColor
=
[UIColor
whiteColor];
[self.window
makeKeyAndVisible];
return
YES;
}
=================================================
//点击空白回收键盘
- (void)touchesEnded:(NSSet
*)touches
withEvent:(UIEvent
*)event{
//获取父视图
UIView
*contenView =
[self.window
viewWithTag:300];
for
(int
i
= 0;
i <</span> 5;
i ++ ) {
UITextField
*field =
(UITextField
*)[contenView
viewWithTag:200
+
i];
[field resignFirstResponder];
}
点return回收键盘
(BOOL)textFieldShouldReturn:(UITextField
*)textField;{
[textField resignFirstResponder];
return
YES;
}
LTView
: UIView
@property
(nonatomic,retain)UILabel
*label;
@property
(nonatomic,retain)UITextField
*field;
LTView
//释放LT
- (void)dealloc{
self.label
=
nil;
self.field
=
nil;
[super
dealloc];
- (instancetype)initWithFrame:(CGRect)frame{
if
(self
=
[super
initWithFrame:frame])
{
[self
p_setup];
//调用封装
}
return
self;
(void)p_setup{
_label
=
[[UILabel
alloc]initWithFrame:CGRectMake(0,
0,
self.frame.size.width
/
2,
self.frame.size.height)];
//
_label.backgroundColor = [UIColor blueColor];
[self
addSubview:_label];
[_label
release];
_field
=
[[UITextField
alloc]initWithFrame:CGRectMake(self.frame.size.width
/
2,
0,
self.frame.size.width
/
2,
self.frame.size.height)];
//
_field.backgroundColor = [UIColor cyanColor];
[self
addSubview:_field];
[_field
release];
[[UIView
alloc]initWithFrame:[UIScreen
mainScreen].bounds];
contenView.tag
=
300;
contenView.backgroundColor
=
[UIColor
whiteColor];
[self.window
addSubview:contenView];
[contenView release];
#import
"LTView.h"
//数据源:是用来提供数据
//label上的数据
NSArray
*texts
= @[@"用户名",@"密码",@"确认密码",@"手机号",@"邮箱"];
//textField上的数据
NSArray
*placegolds
= @[@"请输入用户名",@"请输入密码",@"请再次确认密码",@"请输入手机号",@"请输入邮箱"];
50*i),(280,30)}
//我们管我们自己定义的控件叫做自定义复合视图,因为系统没有为我们提供需要的控件;
for
(int
i
= 0;
i <</span> 5;
i ++) {
LTView
*view =
[[LTView
alloc]initWithFrame:CGRectMake(20,
40
+
50
*
i, 280,
30)];
//给label赋值
view.label.text
=texts[i];
//给field赋值
view.field.placeholder
=
placegolds[i];
//设置代理
view.field.delegate
=
self;
//给view设置tag值
view.tag
=
200
+
i;
view.backgroundColor
=
[UIColor
whiteColor];
[contenView addSubview:view];
[view release];
}
//登录
UIButton
*loginBotton =
[UIButton
buttonWithType:UIButtonTypeSystem];
loginBotton.frame
=
CGRectMake(40,
300,
100,
30);
loginBotton.backgroundColor
=
[UIColor
yellowColor];
[loginBotton setTitle:@"登录"
forState:UIControlStateNormal];
[contenView addSubview:loginBotton];
//注册
UIButton
*signBotton =
[UIButton
buttonWithType:UIButtonTypeSystem];
signBotton.frame
=
CGRectMake(180,
300,
100,
30);
signBotton.backgroundColor
=
[UIColor
yellowColor];
[signBotton setTitle:@"注册"
forState:UIControlStateNormal];
[contenView addSubview:signBotton];
- (void)touchesEnded:(NSSet
*)touches
withEvent:(UIEvent
*)event{
//
//获取父视图
UIView
*contenView =
[self.window
viewWithTag:300];
for
(int
i
= 0;
i <</span> 5;
i ++) {
//此时contentView
上的控件是我们自定义出来的LTView,所以根据Tag取出控件应该转换为LTView类型
LTView
*view =
(LTView
*)[contenView
viewWithTag:200
+
i];
[view.field
resignFirstResponder];
}
(BOOL)textFieldShouldReturn:(UITextField
*)textField;{
[textField resignFirstResponder];
return
YES;
UILTView经典知识点练习的更多相关文章
- Python 入门必学经典知识点笔记【肯定有你不知道的】
前言本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:实验楼 Python 作为近几年越来越流行的语言,吸引了大量的学员开始学 ...
- C++ 经典知识点面试题
1.指针的优点和缺点 优点:灵活高效 (1)提高程序的编译效率和执行速度(数组下标往下移时,需要使用乘法和加法,而指针直接使用++即可) (2)通过指针可使用主调函数和被调函数之间共享变量或数据结构, ...
- LA 3523 圆桌骑士
题目链接:http://vjudge.net/contest/141787#problem/A http://poj.org/problem?id=2942 此题很经典 知识点:DFS染色,点-双连通 ...
- WPF之花式控件功能扩展
文章默认你已经入门WPF了 WPF日常开发,经常遇到默认的控件功能不满足需求,怎么办? No1. 自定义控件模板 平时开发中,经常遇到比较"俗"的需求,嫌弃控件默认的样子. ...
- TCP/IP协议的经典面试知识点总结
前言 大家好啊,我是汤小圆. 今天给大家推荐的是,TCP/IP协议的经典面试知识点总结,希望对大家有帮助,谢谢. 简介 我们平时经常听到的TCP/IP协议,其实是一个协议族: 只不过因为TCP.IP是 ...
- 超全面!1.5w字总结50个Java经典基础面试题(已根据知识点分类)
大家好,我是fancy. 在面试中将基础问题回答好就是成功的一半. 我总结了50道经典的Java基础面试题,里面包含面试要回答的知识重点,并且我根据知识类型进行了分类,可以说非常全面了. 小伙伴们点赞 ...
- 【转】 71道经典Android面试题和答案,重要知识点都包含了
,,面试题1. 下列哪些语句关于内存回收的说明是正确的? (b ) A. 程序员必须创建一个线程来释放内存 B.内存回收程序负责释放无用内存 C.内存回收程序允许程序员直接释放内存 ...
- js数组知识点总结及经典笔试题
1.判断数组 这是笔试里经常会出现的知识考察点,总结一下 (1)Array.isArray()方法判断 var a=[]; Array.isArray(a) //返回true var b='hello ...
- 你必须知道的----C语言笔试面试中经典易错的一些知识点(持续更新)
1. 关于二级指针的解析和引用 1.1 二级指针意义 二级指针存放的是一级指针的地址 Ex: Int a = ; Int *p = &a; Int **q = &p; 1.2 ...
随机推荐
- Docker的名字空间
名字空间是 Linux 内核一个强大的特性.每个容器都有自己单独的名字空间,运行在其中的应用都像是在独立的操作系统中运行一样.名字空间保证了容器之间彼此互不影响. pid 名字空间 不同用户的进程就是 ...
- Docker实例:创建一个点到点连接
默认情况下,Docker 会将所有容器连接到由 docker0 提供的虚拟子网中. 用户有时候需要两个容器之间可以直连通信,而不用通过主机网桥进行桥接. 解决办法很简单:创建一对 peer 接口,分别 ...
- JavaScript Math(算数)对象
Math 对象 Math(算数)对象的作用是:执行普通的算数任务. Math 对象提供多种算数值类型和函数.无需在使用这个对象之前对它进行定义. 使用Math的属性/方法的语法: var x=Math ...
- Vulkan的分层设计
Vulkan驱动层提供了简单高效的API.作为Vulkan API的使用者,我们要严格遵循Vulkan API的使用规则.如果我们违反了这些规则,Vulkan只会返回很少的反馈,它只会报告一部分严重和 ...
- Django extra 和 annotate
>>> qs=Question.objects.extra(select={'anum': 'SELECT COUNT(*) FROM questions_answer WHERE ...
- Git运用基础之如何删除Github上不想要的项目
今天突然想删除,(强迫症想删除)之前练习时多创建的多个Github上的源代码或者无用Demo地址,然后看了一些文章都比较老式,这里我展示一下最新的删除步骤. 一.首先登录自己的Github账户主页(没 ...
- Java并发框架——AQS之原子性如何保证?
在研究AQS框架时,会发现这个类很多地方都使用了CAS操作,在并发实现中CAS操作必须具备原子性,而且是硬件级别的原子性,java被隔离在硬件之上,明显力不从心,这时为了能直接操作操作系统层面,肯定要 ...
- Android之触摸手势检测GestureDetector使用详解
在Android中,当用户触摸屏幕的时候,会产生许多手势,例如down,up,scroll,filing,onSingleTapConfirmed(单击),onDoubleTap(双击)等等. 一般情 ...
- Ejb远程调用-jboss服务器调用服务器-Bean调用Bean
英文参考地址 https://docs.jboss.org/author/display/AS71/Remote+EJB+invocations+via+JNDI+-+EJB+client+API+o ...
- 学习Tensorflow,反卷积
在深度学习网络结构中,各个层的类别可以分为这几种:卷积层,全连接层,relu层,pool层和反卷积层等.目前,在像素级估计和端对端学习问题中,全卷积网络展现了他的优势,里面有个很重要的层,将卷积后的f ...