您的位置:首页 > 产品设计 > UI/UE

UIViewController的详细介绍

2015-08-19 18:07 387 查看

UIViewController概念

视图控制器是应用程序数据和视图之间的重要桥梁,每个iOS应用程序只显示一个用户界面,显示的内容是由控制器或一组视图控制器协调管理。所以,视图控制器提供了一个基本的框架来构建应用程序。

UIViewController是所有视图控制器的父类

iOS提供了许多内置的视图控制器类,以支持标准的用户界面部分,比如导航控制器

(UINavigationController),标签栏控制器(UITabBarController),表视图控制器(UITableViewController)等



视图控制器与视图的关系

视图控制器是传统的Model-View-Controller(MVC)设计模式中 —— 控制器对象

视图控制器提供了许多控制器的基本功能,因为它是所有控制器的基类

视图控制器负责创建和管理一组视图,它本身就提供了一个视图,称为该控制器的根视图(view),协调管理数据和视图之间的交互

Screens, Windows、 Views创建可视化界面



Screens, Windows、 Views的层次关系

UIScreen对象是连接物理屏幕的标示

UIWindow为UIScreen对象提供了一个画布

一组UIView对象就可以显示内容,当window对象相应他们的请求的时候,就开始画显示的内容



UIViewController的创建

UIViewController的创建有两种方式,一种是使用xib的方式来创建

RootViewController是新建的一个类,新建RootViewController.xib

选中RootViewController.xib–>Custom Class(改成RootViewController)

另外一种是使用代码来创建视图

//创建每个控制器的根视图
UIView *rootView =[[UIView   alloc]initWithFrame:[UIScreen   mainScreen].applicationFrame];
self.view = rootView;
self.view.backgroundColor = [UIColor  redColor];


UIViewController生命周期



视图的加载过程

首先去访问view属性

如果存在view,则直接加载。相反,如果不存在,则UIViewController调用loadView方法

loadView方法执行如下操作

如果你覆盖了该方法,则必须创建view给UIViewController的view属性 如果你没有覆盖该方法,UIViewController会调用父类的方法,通过viewDidLoad方法来执行一些其他任务

UIViewController加载视图方法的执行顺序

1、加载nib时会调用
-   (id)initWithNibName:(NSString   *)nibNameOrNil   bundle:(NSBundle   *)nibBundleOrNil

2、没有正在使用nib视图页面,子类将会创建自己的自定义视图层
-(void)loadView

3、视图被加载后调用
-(void)viewDidLoad

4、视图即将出现的时候调用
-(void)viewWillAppear:(BOOL)animated

5、视图出现后的时候调用
-(void)viewDidAppear:(BOOL)animated

6、视图即将消失的时候调用
-(void)viewWillDisappear:(BOOL)animated

7、视图消失后的时候调用
-(void)viewDidDisappear:(BOOL)animated


视图的添加过程



视图的移除过程



视图的卸载过程



视图控制器的视图内存管理



视图控制器的事件传递流程

当前触发的事件——>当视图控制器的根视图——>视图控制器——>窗口——

UIApplication对象——>不处理(忽略)

模态视图

模态视图不是专门的某个类,而是通过视图控制器的presentModalViewController:方法弹出的视图我们都称为模态视图

模态视图出现的场景一般是临时弹出的窗口

模态视图弹出时通过modalTransitionStyle属性设置不同的动画效果

调用 dismissModalViewControllerAnimated: 方法关闭窗口
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: