再读斋

iOS开发之02应用界面

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对象
刘涤生 wechat