UI第三讲.自定义视图 视图控制器 检测屏幕旋转
一.自定义视图 (自定义label-textField视图)
目的:为了进一步优化登录界面,提高代码的精简程度和复用性,可移植性,从而需要在原有视图控件的基础之上自由组合成自定义视图.
2、在类的初始化方法中添加子视图
3、类的.h文件提供一些接口(方法),便于外界操作子视图。
执行顺序及思路:1.创建一个LTView类继承于UIView
2.将LTView作为一个容器,在LTView的初始化方法中创建并添加 label和textField。(作为其属性添加到LTView中) LTView就变成了一个具有label和textField的视图了.
3.调用时引入AppDelegate中,并初始化创建及显示
Appdelegate.m文件(创建文件一同显示)
创建的LTView.h 进行声明
在LTView.m中初始化,并通过方法创建其下属的标签和文本框
效果图
复合设计模式:A类中,使用B类(或者更多类)作为自己的成员(实例变量)。
iOS中复合是特别常见的设计模式。iOS新控件往往都是用已有控件组合而成的。
二.视图控制器(UIVeiwController)
mvc概述
UIViewController(视图控制器)作用:控制视图显示,响应事件.
重写controller的loadView方法,创建LoginView对象,指定为controller的view,并设置label显⽰示为“用户名”,textField的代理,button的点击事件。
controller实现textField的代理方法,实现:点击return键回收键盘。
controller实现button的点击事件⽅方法,实现:NSLog输出。
示例代码:(学会代码的分离使用,delegate,view,controller三者的分离)
AppDelegate.h文件(主要用于用创建的视图控制器取代原有的根视图控制器)
chViewController.m文件
(1.完成视图控制器的初始化 2.重写loadview方法完成view的替换 3.在viewDidLoad中操作按钮点击事件和代理 4.可以实现自定义方法)
在view的.h中将label,textField,button变成子类
在LoginView.m中(1.完成初始化 2.在方法中创建label,textField,button)
效果图:(此例题的主要是1.学会如何用代码分离的形式书写,代理只负责代理,view只负责视图相关的展示,视图控制器只负责相关的实现 2.实现按钮点击事件,用代理形式回收键盘)
注意:mvc的代码分离书写格式要掌握以后经常用,代码的书写位置确定,同时对于按钮点击事件要掌握.
三.Controller和屏幕旋转
示例代码:
练习3:
1.将一个view1声明为另一个view的子类进行调用,并在view中添加按钮等,通过这种形式调用
2.实现屏幕的旋转,同时根据横屏竖屏调整相应视图位置
AppDelegate.m文件(只完成视图控制器的替换)
LoginView.h文件(在其中添加按钮等)
在LoginView.m(上)进行初始化并且实现按钮创建
在LoginView.m(下)同时将对应按钮的点击事件也写在这里了(也可以写在controller中)
在lView.h中将上一个为引入其中进行调用
在lView.m文件中调用上一个view的方法,并完成创建,横屏竖屏的判断选择也在其中
zailoginViewController.m(视图控制器)中进行初始化和加载
在视图控制器中完成屏幕旋转操作及点击事件
注意:重要的是要理清思路,然后多敲