视图和视图控制器

15

我是一名新的iPhone应用程序开发者。我想知道视图(view)和视图控制器(viewcontroller)之间有什么区别。


可能是https://dev59.com/HFPTa4cB1Zd3GeqPiFTe的重复,技术上的区别请参考http://stackoverflow.com/questions/3658727/difference-between-view-and-view-controller-technically。 - Jhaliya - Praveen Sharma
iPhone中View和ViewController的区别是什么? - Chetan Bhalara
4个回答

11

UIView

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

由于您的应用程序主要通过视图对象与用户进行交互,因此这些对象具有许多责任。以下仅是其中的一些:

绘图和动画 视图使用诸如UIKit、Core Graphics和OpenGL ES之类的技术在其矩形区域中绘制内容。一些视图属性可以动画到新值。布局和子视图管理 视图可能包含零个或多个子视图。每个视图在与其父视图相关的默认调整大小行为方面定义其自己的默认行为。视图可以根据需要手动更改其子视图的大小和位置。事件处理 视图是响应器并可以处理由UIResponder类定义的触摸事件和其他事件。视图可以使用addGestureRecognizer:方法安装手势识别器来处理常见手势。

UIViewController

UIViewController类为iPhone应用程序提供了基本的视图管理模型。基本视图控制器类支持呈现关联视图,

应用程序,它们提供了管理模态视图和针对设备方向旋转视图的支持。类似UINavigationController和UITabBarController的子类可提供管理复杂视图控制器和视图层次结构的额外行为。
每个UIViewController实例用于管理一个视图层次结构。一个典型的视图层次结构包括一个根视图(该类的view属性引用),通常还有一个或多个子视图呈现实际内容。在iPhone和iPod touch上,根视图通常填满整个屏幕,但在iPad上,此视图可能仅填充屏幕的一部分。在两种情况下,视图控制器负责管理整个视图层次结构,包括所有子视图。
视图控制器与其管理的视图紧密绑定,并参与响应链处理事件。视图控制器本身是UIResponder类的后代,并插入到响应链中,位于其父视图和其超级视图之间,通常属于不同的视图控制器。如果视图控制器的视图未处理事件,则视图控制器本身可以选择在将事件传递给超级视图之前处理事件。
UIViewController类与应用程序窗口一起工作,以处理设备方向更改。如果视图控制器支持新方向(由其shouldAutorotateToInterfaceOrientation:方法的返回值确定),它会将转换从当前方向动画到新方向。作为此更改的一部分,它还应用其视图层次结构中生效的任何调整规则。如果要在方向更改的一部分中对视图层次结构进行更改,则可以覆盖UIViewController的方法以实现更改。有关需要覆盖的方法的信息,请参阅“处理视图旋转”。
视图控制器是大多数iPhone应用程序设计的基础。应用程序。接下来的章节提供有关使用UIViewController类的方法和属性的基本信息。有关使用视图控制器构建和管理应用程序用户界面的更多信息,请参见iOS视图控制器编程指南。


啊!看起来像是一个普通的标题 :-) - Eiko
5
是的,也许是这样!但事实并非如此 ;) - Viktor Apoyan

7

1
@Siju:如果这个回答解决了你的问题,你应该接受这个答案。 - dasdom

5

视图控制器 - 主屏幕

视图 - 可以添加到视图控制器的组件


0

你熟悉模型-视图-控制器模式吗?在开始iPhone开发之前,你应该熟悉它。我推荐阅读Cocoa Design Patterns这本书。相信我,长期来看它会帮助你很多


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接