标签:
一、自定义视图(label-textField组合视图)
1、自定义视图:系统标准UI之外,自己组合出的新的视图。
2、优点:iOS提供了很多UI组件,借助它们我们可以实现不同的功能。尽管如此,实际开发中,我们还需自定义视图。积累自己的代码库,方便开发。自己封装的视图,能像UI空间一样,用于别的项目中,能大大降低开发成本,提高开发效率。
3、高质量代码的特点:可复用,可移植,精炼等。(高内聚,低耦合)。
4、自定义视图步骤
- 根据需求的不同,自定义视图继承的类也有所不同。一般自定义的视图会继承于UIView。
- 创建一个UIView子类:@interface LTView : UIView
- 在类的初始化方法中添加子视图
- 类的.h文件提供一些接口(方法),便于外界操作子视图
- @property (nonatomic, strong)UILabel *leftLabel; // 左侧label
@property (nonatomic, strong)UITextField *rightField; // 右侧文本框
5、小结
- 自定义LTView(UILabel,UITextField)使用了一种设计模式:复合设计模式。
- 复合设计模式:A类中,使用B类(或者更多类)作为自己的成员(实例变量)。
- iOS中复合是特别常见的设计模式。iOS新控件往往都是用已有控件组合而成的。
二、视图控制器
1、视图控制器是应用程序数据和视图之间的重要桥梁,每个iOS应用程序只显示一个用户界面,显示的内容是由控制器或一组视图控制器协调管理。所以,视图控制器提供了一个基本的框架来构建应用程序。
2、UIViewController是所有视图控制器的父类。
3、iOS提供了许多内置的视图控制器,以支持标准的用户界面部分,比如导航控制器(UINavigationController),标签控制器(UITabBarController),表视图控制器(UITableViewController)等。
4、功能
- 控制视图大小变化、布局视图、响应时间。
- 检测以及处理内存警告。
- 检测以及处理屏幕旋转。
- 检测视图的切换。
- 实现模块独立,提高复用性。
三、视图控制器指定视图
1、如何设置
- 自定义视图类继承UIView。在初始化方法中添加子视图控件。
- 重写controller的loadView方法。创建自定义视图对象,并指定为controller的view。(注:loadView方法在控制器的view为nil的时候被调用,用于以变成的方式创建view的时候用到。loadView是使用代码生成视图的时候,当视图第一次载入的时候调用的方法,用于使用(写)代码来实现控件。)
- 将子视图控件对象设置为自定义视图类的属性,在viewDidLoad方法中进行设置:添加action、设置delegate等等。
- 在Controller中添加按钮点击事件实现和代理方法的实现。
2、视图控制器生命周期
四、MVC
1、MVC概述
- UIViewController是MVC设计模式的核心。
- MVC是一个框架级的设计模式。
- M是Model,主要用于建立数据模型(即数据的结构)。
- V是View,主要功能是展示数据。
- C是控制器,主要是控制M和V的通信
2、
五、屏幕旋转
1、视图控制器本身能检测到屏幕的旋转,如果要处理屏幕旋转,需要重写几个方法
- supportedInterfaceOrientations(设置设备支持旋转的方向,如果不添加,视图控制器将无法检测屏幕的旋转)。
- willRotateToInterfaceOrientation:duration:(暂停音乐、关闭视图交互等)。
- willAnimateRotationToInterfaceOrientataion:duration:(添加自定义动画等)。
- didRotateFromInterfaceOrientataion:(播放音乐、打开视图交互等)。
2、视图的处理
- 注意视图控制器会自动调整view的大小以适应屏幕旋转,bounds被修改,触发view的layoutSubviews方法。
- view重写layoutSubviews方法,根据设备方向,重新布局。
- [UIApplication shareApplication].statusBarOrientation提供设备当前方向。
六、内存警告
1、内存警告来源:如果手机内存80M,程序运行过程中内存接近80M时程序会为每一个视图控制器发送内存警告消息。
2、如何处理
- 控制器能检测内存警告,以便我们避免内存不够引起的crash。
- 在定义的controller子类中重写didReceiveMemoryWarning方法。
- 释放暂时不适用的资源(self.view及view的子视图例如数据对象、图像)。
iOS学习之视图控制器
标签:
原文地址:http://www.cnblogs.com/soley/p/5397787.html