在Object-C中,NSObject是所有类的基类。同样,在UIKit框架中,也存在一个这样的基类UIView。从继承关系上看,UIView是所有视图的根。
UIView类关系图
UIView子类大体分为“控件”和“视图”两类,二者都继承于UIView。UIView类的继承层次如图:
UIControl类是控件类,其子类就是一些控件,之所以称为控件,是应为他们可以响应一些交互的事件。
应用界面的构建层次
下图是一个应用界面的构建层次图,该应用有一个UIWindow,其中包含一个UIView根视图。根视图下有3格子视图——Button1、Button2、和UIView(view2),其中子视图UIView(view2)中存在一个按钮Button3
一般情况下,应用中只包含一个UIWindow。UIWindow包含一个根视图UIView。根视图一般只有一个,放于UIWindow中。根视图的类型决定了应用程序的类型。下图为各对象间的关系
应用界面的构建层次是一种树形结构,UIWindow是树根,根视图是树干,其他对象就为树冠。在层次结构中,上下两个视图是父子关系。除了UIWindow,每个视图的父视图有且只有一个,子视图可以多个。他们关系设计3个属性
superview: 获得父视图对象
subviews: 获得子视图对象集合
window 获得视图所在的UIWindow对象
视图分类
为了方便,UIKit框架中的视图分成以下几个类型:
控件 继承自UIControl类,能够响应用户高级事件
窗口 UIWindow对象,一个iOS应用只有一个UIWindow对象,他是所有子视图的根容器。
容器视图 包括UIScrollView、UIToolBar以及他们的子类。UIScrollView的子类有UITextView、UITableView和UICollectionWindow,在内容超出屏幕是,它们可以提供水平或垂直滚动条。UIToolbar是非常特殊的容器,它能够包含其他控件,一般置于屏幕底部,特殊情况下也可以置于屏幕顶部。
显示视图 用于显示信息,包括UIImageView、UILabel、UIProgressView和UIActivityIndicatorView等。
文本和Web视图 提供了能够显示多行文本的视图,包括UITextView和UIWebVIew,其中UITextView也属于容器视图,UIWebView是能能够加载和显示HTML代码的视图。
导航视图 为用户提供从一个屏幕到另外一个屏幕的导航视图,它包括UITabBar和UINavigationBar。
警告框和操作表 用于给用户提供一种反馈或者与用户进行交互。UIAlertView视图是一个警告框,它会以动画形式弹出;而UIActionSheet视图给用户提供可选的操作,它会从屏幕底部滑出