一.自定义视图(label-textField组合视图)
采用:复合设计模式
自定义视图优点:
1.iOS提供了很多UI组件,借助它们我们可以实现不同的功能。尽管如此,实际开发中,我们需要自定义视图。积累自己的代码库,方便开发。自己封装的视图,能像系统UI控件一样,用于别的项目中,能大大降低开发成本,提高开发速率。
2.高质量代码的特点:可复用,可移植,精炼等(高内聚,低耦合)
AppDelegate.m中:
LTView.h中:
LTView.m中:
RootView.m中:
二.视图控制器
1.视图控制器是应用程序数据和视图之间的重要桥梁,每个iOS应用程序只显示一个用户界面,显示的内容是由控制器或一组视图控制器协调管理。所以,视图控制器提供了一个基本的框架来构建应用程序。
2.UIViewController是所有视图控制器的父类
3.iOS提供了许多内置的视图控制器,以支持标准的用户界面部分,比如导航控制器(UINavigationController),标签控制器(UITabBarController),表视图控制器(UITableViewController)等。
功能:
1.控制视图大小变化,布局视图,响应事件
2.检测以及处理内存警告
3.检测以及处理屏幕旋转
4.检测视图的切换
5.实现模块独立,提高复用性
三.视图控制器指定视图
自定义视图
1.自定义视图类继承UIView。在初始化方法中添加子视图控件
2.重写controller的loadview方法。创建自定义视图对象,并制定为controller的view(注意:loadView方法在控制器的view为nil的时候别调用,用于以编程的方式创建view的时候用到。loadView是使用代码生成视图的时候,当视图第一次载入的时候调用的方法,用于使用写代码来实现控件)
3.将子视图控件对象设置为自定义视图类的属性,在viewDidLoad方法中进行设置:添加action,设置delegate等等
4.在controller中添加按钮点击事件实现和代理方法的实现
四.MVC
1.UIViewController是MVC设计模式的核心
2.MVC是一个框架级的设计模式
3.M是model,主要用于建立数据模型(数据的结构)
4.V是View,我们能看到的所有控件都是view,view的主要功能是显示数据
5.C是controller,主要是控制M和V的通信
五.屏幕旋转
方向:
视图控制器本身能检测到屏幕的旋转,如果要处理屏幕旋转,需要重写几个方法:
1.supportedInterfaceOrientation(设置设备支持旋转的方向,如果不添加,视图控制器将无法检测屏幕的旋转)
2.willRotateToInterfaceOrientation:duration(暂停音乐,关闭视图交互等)
3.willAnimateRotationToInterfaceOrientation : duration(添加自定义动画等)
4.didRotateFromInterfaceOrientation: (播放音乐,打开视图交互等)
视图的处理:
1.注意视图控制器会自动调整view的大小以适应屏幕旋转,bounds被修改,触发view的layoutSubviews方法
2.view重写layoutSubviews方法,根据设备方向,重新布局
3.[UIAppication shareApplication].statusBarOrientation提供设备当前方向
六.内存警告
内存警告来源:手机内存80M,程序运行过程中内存接近80M时程序会为每一个视图控制器发送内存警告消息。
如何处理:
1.控制器能检测内存警告,以便我们避免内存不够引起的crash
2.在定义的controller子类中重写didReceiveMemoryWarning方法
3.释放暂时不使用的资源
- (void) didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
//根视图已经加载过,根视图未显示
if([self isViewLoaded] == YES && self.view.window == nil) {
//将根视图销毁,目的是再次进入时能够重新加载调用viewDidLoad函数
self.view = nil;
}
}