iOS界面应用界面主要是使用Cocoa Touch框架开发,它有一套自己的MVC模式,其中视图和控制器是UIKit中的UIVIew及其子类和UIVIewController及其子类。
视图控制器
Cocoa Touch中UIVIewController是所有控制器的基类,视图控制器有很多种,下面先介绍一个iOS中的控制器种类和生命周期。
视图控制器种类
与导航相关的视图控制器如下所示:
UIViewController: 用于自定义视图控制器的导航。例如对于两个界面的跳转,可以用一个UIViewController来控制另两个UIViewController。
UINavigationController:导航控制器,它与UITableViewController结合使用,能够构建树形结构导航模式
UITabBarController: 标签栏控制器,用于构建树形标签导航模式
UIPageViewController:呈现电子书导航风格控制器
UISplitViewController:可以把屏幕分割成几块的视图控制器,主要为iPad屏幕设计
UIPopoverController:呈现气泡风格视图的控制器,主要为iPad屏幕设计。
视图的生命周期
在应用运行过程中视图会显示不同的状态,这就是应用的生命周期。视图生命周期的不同阶段会回调视图控制器的不同的方法,视图控制器的生命周期如下图所示:
视图的生命周期主要有四种状态:
- 视图创建
视图创建不加载到内存中,会调用viewDidLoad方法,但是视图此时并不可见。该方法中通常会对所控制的视图进行初始化处理。viewDidLoad方法在应用运行的时候只调用一次。
- 视图可见
视图可见前后会调用viewWillAppear和viewDidAppear两个方法。
- 视图不可见
视图不可见前后会调用viewWillDisappear和viewDidDisappear两个方法。
- 系统低内存
在低内存情况下,iOS系统会调用didReceiveMemoryWarning方法,该方法的功能是释放内存,包括视图控制器中的一些成员变量和视图的释放。
视图
Cocoa Touch中UIViewC是所有视图的基类。
UIView继承层次结构
视图分类
苹果将UIKit框架中的视图分为以下几个类别:
- 控件
继承自UIController类,能够响应用户高级事件。
- 窗口
它是UIWindow对象,一个iOS应用只有一个UIWindow对象,它是所有子视图的父容器。
- 容器视图
它是UIScrollView、UIToolbar及它们的子类。UIScrollView的子类有UITextView、UITabView和UICollectionView,在内容超出屏幕时,它们可以提供水平或垂直滚动条。UIToolbar是非常特殊的容器,它能够包含其他控件,一般置于屏幕底部,特殊情况下也可以置于屏幕顶部。
- 显示视图
用于显示信息,包括UIImageView,UILabel、UIProgressView和UIActivityIndicatorView等
- 文本和Web视图
提供了能够显示多行文本的视图,包含UITextView和UIWebView,其中UITextView也属于容器视图,UIWebView是能够加载和显示HTML代码的视图。
- 导航视图
为用户提供从一个屏幕到另一个屏幕的导航视图,它包括UITabBar和UINavigationBar。
- 警告框和操作表
用于给用户提供一种反馈或者与用户进行交互。警告框是可以以动画方式弹出来的视图,而操作表是给用户可选择操作的视图,在iphone中它会从屏幕底部弹出,在iPad中则会出现在屏幕中央。
应用界面构建层次
一般情况下,iOS用于中只包含一个UIWindow。从UI构建层次来讲,UIWindow包含了一个根视图UIView。根视图一般也只有一个,置于UIWindow中。根视图类型决定了应用程序的类型。应用界面的构建层次是一种树形结构,如下图所示:
简要介绍图中三个属性的含义:
- superview:获得父视图对象
- subviews:获得子视图对象集合
- window:获得视图所在的界面Window对象