本博客将在今后陆续进行本书的连载,敬请关注!
更多内容请大家购买正版《iPhone应用程序开发指南(基础篇)》
6.1 视图的概述
在iPhone程序开发中,视图是最基础的部分。严格来说,几乎所有显示在iPhone屏幕上的内容都可以被称为视图,比如通常见到的按钮、开关、图片等。我们可以设置视图的大小和位置,以及视图之间的层次关系。如图6-1所示,屏幕上显示的文字、图形等都是视图。
视图和窗口
视图是显示可见元素的图形用户界面(GUI),而窗口则是存放视图的容器,它们都是构建iPhone程序界面的基本组成部分。具体来说,窗口提供了一个显示具体内容的平台,而视图则承担了大部分的绘制界面和用户响应的工作。iPhone界面的设计通常采用“单窗口-多视图”的模式,即程序只有一个窗口却可以有多个视图,打个比方,如图6-2所示,把窗口比作显示器,视图就如同显示出来的丰富多彩的内容。显示器里面的内容是不断更新和变化的,而显示器却是不变的。它不像Windows IE那样可以是多个窗口同时浏览,如图6-3所示。
窗口,即窗口类(UIWindow)的一个实例。它用来定义一个定位和管理应用程序界面的对象。窗口有层次地保存所有的视图,并且位于所有层次的根部。从根本上说,窗口就是一种特殊的视图,它对于桌面系统非常重要,但对iPhone应用程序就没有那么重要了,因为iPhone应用程序一般只有一个窗口,毕竟iPhone的屏幕太过小巧,这也是iPhone程序采用“单窗口-多视图”模式的直接原因。
视图,即视图类(UIView)的一个实例,它通常用于定义屏幕上的一个矩形区域,可以用来显示各种控件、图像等可视元素,这些元素都是以子视图的方式加载在视图上的,这就是我们稍后要讲解的视图层次关系。
视图的继承
在iPhone开发中,UIView的继承是一部分重要的内容,具体来说,视图一般拥有一个父视图和多个子视图。图6-4中列出了UIView的这种继承关系,从中我们可以很清楚的看出UIView的父类是NSObject,而它的子类是UIControl、UIWindow等。UIControl拥有很多子类,其中包括UIButton、UITextField、UISwitch、UISlider等等,这些基本上就是本章所要讲解的内容。
这里简单介绍一下UIControl。UIControl继承自UIView,从上面的图中可以清楚地看出这种关系。UIControl的主要作用是实现用户和程序的交互:当用户操作某个控件时,将触发相应的事件来完成一定的功能或过程;UIControl还可以控制控件的状态,例如设置它们的enabled或者highlighted属性。
视图的层次结构
程序中每个视图和显示该视图的窗口是相互关联的,一个窗口中的所有视图可以根据视图层次连在一起。iPhone按照视图加入的先后顺序,由后向前显示,这说明了视图层次是一种空间上的叠加关系。所有视图都可以有子视图,一个视图可能拥有很多子视图,也可能没有子视图。
从图6-5 World Clock视图层次中可以看出,包含状态栏的是程序窗口,显示的是在iPhone上运行的程序的界面。标号为2的是去除状态栏的程序“视图”,3是程序“视图”的导航栏部分,4是标签栏部分,5是位于导航栏和标签栏之间的自定义视图部分。2、3、4、5部分叠加在一起形成程序视图1。
视图层次,就是视图在空间上的相互位置关系,它可以帮助我们从整体上理解视图,也为接下来学习控件的知识做铺垫。