UI_自定义视图、视图控制器
自定义视图
视图控制器
视图控制器指定自定义View
检测屏幕旋转
处理内存警告
容器视图控制器
自定义视图
自定义视图:系统标准UI之外,自己组合而出的新的视图。
自定义视图步骤:(使用了复合设计模式)
根据需求不同,自定义视图继承的类也有所不同。一般自定义的视图会继承于UIView。
- 创建一个UIView子类。
- 在类的初始化方法中添加子视图
- 类的.h文件提供一些接口(方法),便于外界操作子视图
- 创建一个LTView类继承与UIView
- 将LTView作为一个容器,在LTView的初始化方法中创建并添加label和textField
- 这时,LTView就变成一个具有label和textField的视图了
注意:需要对LTView中的label和textField进行一定的控制,比如:设置label中text,获取textField中的text,给textField指定delegate,设置textColor等
视图控制器
视图控制器的概述:
- 控制视图显示,响应事件
- 分担AppDelegate的工作
- 实现模块独立,提高复用性。
视图控制器功能:
- 控制视图大小变换、布局视图、响应事件
- 检测以及处理内存警告。
- 检测以及处理屏幕旋转
- 检测视图切换
视图控制器的使用:
- 定义UIViewController的子类
- 创建视图控制器对象,作为window的根视图控制器
- 在viewDidLoad中使用默认创建好的视图对象view
视图控制器自定义View
为什么使用自定义view:
- UIViewController自带一个空的View,与需求不符。
- 视图控制器只负责控制视图显示,响应事件
如何设置:
- 自定义视图继承UIView。在初始化方法中添加子视图控件。
- 重写controller的loadView方法。创建自定义视图对象,并指定为controller的view
- 将子视图控件对象设置为自定义视图类的属性,在viewDidLoad方法中进行设置:添加action、设置delegate等
- 在controller中添加按钮点击事件和代理方法的实现。
检测屏幕旋转
检测屏幕旋转:
1 //视图控制器本身能检测到屏幕的旋转,如果要处理屏幕旋转,需要重写几个方法:
2 supportedInterfaceOrientations(设置设备支持旋转的方向)
3 willRotateToInterfaceOrientation:duration:(暂停音乐、关闭视图交互等)
4 willAnimateRotationToInterfaceOrientation:duration:(添加自定义动画等)
5 didRotateFromInterfaceOrientation:(播放音乐、打开视图交互等)
2 supportedInterfaceOrientations(设置设备支持旋转的方向)
3 willRotateToInterfaceOrientation:duration:(暂停音乐、关闭视图交互等)
4 willAnimateRotationToInterfaceOrientation:duration:(添加自定义动画等)
5 didRotateFromInterfaceOrientation:(播放音乐、打开视图交互等)
视图处理:
- 视图控制器会自动调整view的大小适应屏幕旋转
- bounds被修改,触发view的layoutSubviews方法
- view重写layoutSubviews方法,根据设备方向,重新布局
- [UIApplication shareApplication].statusBarOrientation提供设备当前方向
处理内存警告
- 控制器能监测内存警告,以便我们避免内存不够引起的crash
- 在定义的controller子类中重写didReceiveMemoryWarning方法
- 释放暂时不使用的资源(数据对象、图像)
容器视图控制器
1 常用方法:
2 self.view 显示:viewWillAppear:和viewDidAppear:
3 self.view 消失:viewWillDisappear:和 viewDidDisappear:
2 self.view 显示:viewWillAppear:和viewDidAppear:
3 self.view 消失:viewWillDisappear:和 viewDidDisappear:
- 当self.view添加到父视图上时,执行appear方法:
- 当self.view从父视图上移除时,执行disappear方法

浙公网安备 33010602011771号