自定义视图
继承于UIView
1、创建一个UIView子类
2、在类的初始化方法中添加子视图
3、类的.h文件提供一些接口(方法),便于外界操作子视图。
假设我们使⽤用LTView类代表label-textfield视图。
我们创建一个LTView类继承于UIView。
我们将LTView作为一个容器,在LTView的初始化方法中创建并添加label和textField。
此时的LTView就变成了一个具有label和textField的视图了。
把Label和Textfield封装到LTView中,在⼀一定程度上简化了我们的代码。
往往我们需要对LTView中的Label或者Textfield进⾏行⼀一定的控制,⽐比如:设置Label的text,获取Textfield的text,给Textfield指定delegate,设置textColor等。
为了⽅方便外界操作Label和Textfield,因此我们要为外界提供⼀一些⽅方法。
视图控制器
UIViewController :视图控制器.
控制视图显示,响应事件.
分担AppDelegate工作
实现模块独立,提高复用性.
功能:
控制视图大小变换,布局视图,响应事件.
检测以及处理内存警告
检测以及处理屏幕旋转
检测视图的切换
MVC 概述
UIViewController是MVC设计模式的核⼼心。
MVC是⼀一个框架级的设计模式。
M是Model,主要⽤用于建⽴立数据模型(即数据的结构)
V是View,我们能看到的所有控件都是view,view主要的功能是展⽰示数据。
C是控制器,主要是控制M和V的通信。
使用视图控制器
定义UIViewController的子类
创建视图控制器对象,作为window的根视图控制器
在viewDidLoad中使⽤用默认创建好的视图对象view
设置自定义视图
自定义视图类继承UIView。在初始化方法中添加子视图控件。
重写controller的loadView方法。创建自定义视图对象,并指定为controller的view。
将子视图控件对象设置为自定义视图类的属性,在viewDidLoad⽅方法中进行设置:添加action、设置delegate等等。
在controller中添加按钮点击事件实现和代理方法的实现。
视图控制器本⾝身能检测到屏幕的旋转,如果要处理屏幕旋转,需要重写⼏几个
⽅方法:
1. supportedInterfaceOrientations(设置设备⽀支持旋转的⽅方向)
2. willRotateToInterfaceOrientation:duration:(暂停⾳音乐、关闭视图交互等)
3. willAnimateRotationToInterfaceOrientation:duration:(添加⾃自定义动画等)
4. didRotateFromInterfaceOrientation:(播放⾳音乐、打开视图交互等)。
视图处理
注意视图控制器会⾃自动调整view的⼤大⼩小以适应屏幕旋转,bounds
被修改,触发view的layoutSubviews⽅方法。
view重写layoutSubviews⽅方法,根据设备⽅方向,重新布局。
[UIApplication shareApplication].statusBarOrientation提供设备当前⽅方向。
self.view显⽰示:viewWillAppear: 和 viewDidAppear:
self.view消失:viewWillDisappear: 和 viewDidDisappear:
当self.view添加到父视图上时,执行appear方法: 当self.view从父视图上移除时,执行disappear方法。
执行顺序
定义FirstViewController、SecondViewController类,first作为window的根视图控制器。
将SecondViewController的view添加到FirstViewController的view上。
将SecondViewController的view移除。
查看SecondViewController中4个方法的执行顺序。