1.Interface Builder(简称IB,界面构建器)
1.1 是什么?
一个可视化的界面编辑工具软件,在xcode4之后整合到了xcode中
1.2 作用?
通过可视化的界面设置,能够少写或不写代码而完成界面的设计,从而减少在控制器的viewDidLoad中写的大量有关创建控件及设置属性的代码
1.3 工作原理
将界面所需控件的设置保存到xib文件中,在创建控制器实例的时候,系统会根据指定的xib文件来自动创建视图中的各个控件的实例、设置实例的属性,将其用于对控制器自带的视图的初始化中。所以,在创建控制器实例时,需要使用initWithNibName方法来指定有关视图的配置需要加载的文件是哪一个
1.4 所需文件
XxxxYyyy.h
XxxxYyyy.m
XxxxYyyy.xib (xml interface builder)
1.5 IBOutlet,IBAction
由于控制器的视图中所需的控件都由系统根据xib文件自动创建完成,所以view已经对这些控件对象是strong(强引用)了,但是,此时控制器无法访问系统创建的这些控件,于是需要通过特殊的方法来获取系统创建的这些对象的引用。
如果,是对IB中的对象添加属性访问,让控件成为一个外界可以访问的输出口,则通过连线的方式,使其成为控制其的IBOutlet属性
如果,是对IB中的对象添加事件的响应,则通过连线的方式,为控件添加IBAction行为
添加连线的方式:
a。打开拆分视图,左边为xib文件,右边为xib对应的控制器m文件
b。选中控件,按下control
c。在控件上按下鼠标左键,拖拽到右侧的指定位置
d。如果是添加输出口,则拖拽到扩展中
e。如果是添加action,则拖拽到类的实现中
1.6 action的参数
在为控件添加事件响应时,可以添加一个参数,默认为id类型,代表的是发生事件的源头是哪个控件,或者说本次事件的发送者是谁
在需要用到这个参数来区分连到同一个方法上的多个控件的时候,可以在连线时,选择type参数,设置为具体的某种控件类型,不需要再在方法内进行类型转换了。
1.7 使用IB连线时的注意事项
如果对IB中的控件连线后,又删除,那么此时删掉的只是代码中的变量或方法,并没有删掉界面中控件记录的连线,一定要在xib中,选中控件,右键,查看绑定的线有几条,将不需要的连线删掉,才不会出错。
2.基础控件(UIStepper UISlider UISwitch)
2.1 UIStepper 步进控件
重要属性:
.value
.maximumValue
.minimumValue
.stepValue
常用事件:
value Changed事件:当数值改变时触发
2.2 UISlider 滑块控件
重要属性:
.value
重要事件:
value Changed事件:当数值改变时触发
2.3 UISwitch 开关控件
重要属性:
.on (BOOL) 获取或设置开关的状态
.enabled(BOOL) 获取或设置控件是否可用
重要的事件:
valueChanged事件
3.UITextField
3.1 是什么?
是单行的文本输入框,支持用户的输入
3.2 属性
.text 获取或设置文本框内的文本
… …
3.3 系统弹出的键盘
第一响应者:当用户触摸界面时,系统会根据手指触摸的位置层层定位到具体的控件,如果,本次触点在文本框控件的区域内,那么文本框就负责对本次的触碰事件进行响应,由于文本框比较特殊,所以系统自动将文本框设置为响应事件的第一关,并且自动弹出键盘。
插播:
当用户点击屏幕后,首先开启的是查找hit-View的过程。从window开始,给所有直接子视图发hit-Test的消息,直到某一个控件没有子视图了,并且这个触点在这个子视图中,则返回这个控件,于是hit-View找到了
找到hit-View后,view则成为了需要第一个为这个事件提供响应的对象,如果,该对象没有提供事件响应,则该事件对象会向视图的父视图继续传递,如果父视图依然没有提供响应,则继续向上传递,直到传递到UIApplication对象,依然没有处理的话,则抛弃该事件。这个过程叫做响应者链。
3.4 如何关闭键盘
方法一:让键盘放弃第一响应者的身份即可
[self.textField resignFirstResponder];
方法二:让键盘所在的父视图结束编辑状态
[self.view endEditing.YES];
3.5什么时候关闭键盘呢?(关闭键盘的时机)
时机一:点击键盘右下角的按键
为文本框添加一个 事件
时机二:点击屏幕的空白部分
重写控制器的touchesBegan:withEvent:方法
4.UIAlertView &UIActionSheet
作业:
1.界面如下:
[输入框][发送按钮]
1)当点击发送按钮后,界面上会出现一个UILabel,内容就是输入框中的内容,此时要求,收起键盘,清空输入框
2)当用户点击键盘右下角的按键时,功能和1相同
3)label本身设置为宽280,高40,距离左边20个点
4)多了label不能重合
2.界面如下:
[输入框 账号]
[输入框 密码]
[登录 按钮]
[UILabel 显示当前状态(登录后显示用户名,没登录显示未登录)]
1)用户输入完用户名和密码后,点击登录,判断是否可以登录,如果登录成功,label上显示当前用户的用户名,如果没有登录,显示未登录
//2)当用户没有填写用户名和密码时,点击登录,提供用户输入用户名和密码
3)第一个textField支持Next功能,第二是Done
--------------------------------------------------------------------------------------------------------
总结: