视图和视图控制器

我是一个新的iphone应用程序开发人员。我想知道什么是视图和viewcontroller之间的区别。

的UIView

UIView类定义了屏幕上的一个矩形区域和用于pipe理该区域内容的接口。 在运行时,视图对象处理其区域内的任何内容的呈现,并处理与该内容的任何交互。 UIView类本身提供了用背景颜色填充矩形区域的基本行为。 更复杂的内容可以通过inheritanceUIView并自己实现必要的绘图和事件处理代码来呈现。 UIKit框架还包括一套可以使用的标准子类,其范围从简单的button到复杂的表格。 例如,一个UILabel对象绘制一个文本string,一个UIImageView对象绘制一个图像。

由于您的应用程序主要通过视图对象与用户进行交互,因此这些对象有一些责任。 这里仅仅是less数:

绘图和animation视图使用UIKit,Core Graphics和OpenGL ES等技术在其矩形区域绘制内容。 一些视图属性可以animation成新的值。 布局和子视图pipe理视图可能包含零个或多个子视图。 每个视图都定义了与其父视图相关的默认resize行为。 视图可以根据需要手动更改子视图的大小和位置。 事件处理视图是响应者,可以处理由UIResponder类定义的触摸事件和其他事件。 视图可以使用addGestureRecognizer:方法来安装手势识别器来处理常见的手势。

的UIViewController

UIViewController类为iPhone应用程序提供了基本的视图pipe理模型。 基本视图控制器类支持相关视图的显示,支持pipe理模态视图,支持响应设备方向更改的旋转视图。 UINavigationController和UITabBarController等子类为pipe理视图控制器和视图的复杂层次结构提供了额外的行为。

您使用UIViewController的每个实例来pipe理视图层次结构。 一个典型的视图层次结构由一个根视图组成,这个视图在这个类的视图属性中是可用的,通常是一个或多个呈现实际内容的子视图。 在iPhone和iPod touch上,根视图通常填充整个屏幕,但在iPad上,该视图可能只填充屏幕的一部分。 在这两种情况下,视图控制器都负责pipe理整个视图层次结构,包括所有子视图。

视图控制器与其pipe理的视图紧密相关,并参与用于处理事件的响应链。 视图控制器本身就是UIResponder类的后代,并被插入到受pipe根视图和其超视图之间的响应者链中,该视图通常属于不同的视图控制器。 如果视图控制器的视图不处理事件,则视图控制器本身可以select在将事件传递给超视图之前处理该事件。

UIViewController类与应用程序的窗口一起处理设备方向的变化。 如果视图控制器支持新方向(由其shouldAutorotateToInterfaceOrientation:方法的返回值确定),则它将animation从当前方向转换到新方向。 作为此更改的一部分,它还将在其视图层次结构中应用的任何调整规则应用于视图。 如果你想改变你的视图层次作为方向改变的一部分,你可以重写UIViewController的方法来实现你的改变。 有关您需要覆盖的方法的信息,请参阅“处理视图旋转”。

视图控制器是大多数iPhone应用程序devise的基础。 以下各节提供了有关使用UIViewController类的方法和属性的基本信息。 有关使用视图控制器来构build和pipe理应用程序的用户界面的更多信息,请参阅适用于iOS的视图控制器编程指南。

UIViewController实例pipe理UIView实例的层次结构。

阅读体现大多数iOS应用程序devise的模型 – 视图 – 控制器模式 。

ViewController – 主屏幕

视图 – 可以添加到ViewController的组件

你熟悉模型 – 视图 – 控制器模式吗? 在开始iPhone开发之前,您应该熟悉它。 我推荐Cocoa Design Patterns这本书。 相信我,从长远来看,这将有很大的帮助。